精华内容
下载资源
问答
  • IBM WebSphere message broker 命令详解
  • WebSphere连接池参数详解 博客分类:  websphere   应用程序读取数据库有2种方式,一种是直接连接数据库,一种是调用连接池。   1) 直连是程序直接创建物理连接,调用数据库进行数据读取。直连的...
    
    
    应用程序读取数据库有2种方式,一种是直接连接数据库,一种是调用连接池。 
        1)       直连是程序直接创建物理连接,调用数据库进行数据读取。直连的创建会带来很大的系统开销,若程序中多处频繁使用直连,会造成应用服务器资源消耗过多,影响程序的性能。 
        2)       连接池是创建和管理一个物理连接的缓冲池,其中会保留一定数量创建的物理连接不关闭,当有客户端请求时,调用连接池,可以有效减少物理连接的创建次数,降低直连所带来的系统开销,缓解应用服务器压力,提高程序性能。 
        下面我对连接池各参数意义进行讲解: 
        连接超时 
        连接超时是指,当对指定连接池进行请求时,池中没有可用连接(连接全部被使用,或者数据库请求超时),当请求时间到达指定之间时未响应,那麽这个时候就会产生超时异常,通过日志可以发现。 
        连接超时的设置,是对我们应用响应速度的一种把关,客户往往要求我们的产品在多长时间必须有响应,所以连接超时的设置,可以让我们发现哪些程序点有响应速度问题,可能是数据库查询语句问题,也有可能是程序逻辑死循环,再有可能就是数据库表结构需要优化,还有可能是最大连接数到达最大值。 
        最大连接数 
        最大连接数是指当前连接池中允许创建的最大物理连接数,当到达指定值后,将不允许创建物理连接。和连接超时相对应,当达到最大值后,连接请求将等待,直到池中有空闲连接为止,否则报连接超时错误。当使用集群机制时,会同时存在多个相同连接池,这个时候需要考虑最大数量的设置。 
        最大连接数可以有效控制创建物理连接的数量,连接池的大小影响着服务器资源的占用情况,若连接池过大,则会长期占用服务器可利用资源,若连接池过小,无法满足现场环境应用高负载使用压力。最大连接数的设置应根据TPV观测数据进行合理配置。 
        最小连接数 
        最小连接数是指当前连接池要保留的最小物理连接,其决定未使用超时维护机制的下限,连接池的创建不是根据最小连接数而特意创建,而是根据用户请求而创建,系统会一直维护最小的连接数目。 
        最小连接数使应用服务器保持一定数量的物理连接,利用应用服务器维护机制,合理分配服务器资源。当应用程序访问频繁,但访问人数少的情况下,最小连接数的合理配置,可以将有效的资源进行充分利用,满足特定应用需求。 
        收集时间 
        收集时间是连接池维护机制的核心,是指每次维护连接池的时间间隔。其有两个维护指标,分别为未使用超时和时效超时,其值应该小于两个指标中的任何一个。每一次维护周期中,连接池都会将连接池中超时的物理连接关闭,以减少系统占用资源。 
        合理的收集时间设置,是帮助我们关闭不必要的连接,节省系统资源占用的有效途径。收集时间设置不易过大,因为时间间隔过长,会使很多未被使用的物理连接持续占用资源。若收集时间过小,则频繁的维护会带来很多系统开销,连接池的主要精力都放到了维护上。 
        未使用的超时 
        未使用的超时指池中的物理连接空闲未使用的时间间隔,每隔指定时间,系统会为连接标记,帮助收集时间在维护过程中进行关闭。未使用的超时应该小于实效超时时间,并且其以最小连接数为标准,当连接数超过最小连接数时,其才起作用。 
        未使用超时的设置,帮助我们关闭不必要的空闲连接,释放系统资源,并且减少数据库开销。根据现场环境使用情况,我们可以根据系统访问频繁程序,来定制合理的未使用超时,如果过小,当访问频繁程度大时,总需要重新创建,如果过大,当访问频繁程度不大时,连接池又空闲占用过多。 
        时效超时 
        实效超时指关闭物理连接的时间间隔,这个值是指到达指定的时间后,关闭满足时间条件的物理连接,若这个物理连接未使用,则直接关闭,若这个连接正在使用,则当前事务结束后,关闭此连接。这个值不受最小连接数的影响,若没有新创建的连接,此机制会关闭连接直到为0。 
        时效超时的设置,是为了方式应用程序或者数据库造成的数据库连接持续占用,可能导致的原因包括程序逻辑错误,数据库宕机导致的错误等。还有一种情况为人为导致,就是若某个用户持续占用一个资源不放,会导致其他用户无法访问。所以时效超时的设置,是对不合理使用应用,或者链接错误等进行强行关闭,保证程序的稳定性和持久性。 
    展开全文
  • IBM Websphere MQ 使用详解

    千次阅读 2019-03-20 17:07:10
    首先,此攻略不包含安装和配置的内容。...下面是安装配置后的截图: 1.队列和通道的理解 队列对应Buffer,通道对应Channel。 根据通道是本方还是对方,启用相应的通道(即服务)。 远程队列_remote发送到对方的本地...

    1.MQ安装配置

    安装和配置的内容,可参考https://jingyan.baidu.com/article/2fb0ba409f4e1e00f2ec5fd3.html
    下面是安装配置后的截图:
    IBM MQ 部署后截图

    2.队列和通道的理解

    队列对应Buffer,通道对应Channel。
    根据通道是本方还是对方,启用相应的通道(即服务)。
    MQ队列
    远程队列_remote发送到对方的本地队列_local。
    比如,在abc_remote上放入消息“123”,在cz_local队列上就能获取“123”。

    更详细的理解请点击

    3.java代码

    3.1 阻塞模式
    import grp.pt.util.StringUtil;
    
    import org.apache.log4j.Logger;
    
    import com.ibm.mq.MQC;
    import com.ibm.mq.MQEnvironment;
    import com.ibm.mq.MQException;
    import com.ibm.mq.MQGetMessageOptions;
    import com.ibm.mq.MQMessage;
    import com.ibm.mq.MQPutMessageOptions;
    import com.ibm.mq.MQQueue;
    import com.ibm.mq.MQQueueManager;
    import com.ibm.mq.MQSimpleConnectionManager;
    import com.river.common.UploadFileUtil;
    
    /**
     * MQ配置 连接信息
     */
    public class MqHandler {
    
    	private static Logger log = Logger.getLogger(MqHandler.class);
    
    	private static String MQ_IP = UploadFileUtil
    			.getFromPro("mqconfig", "MQ_IP");
    
    	private static int MQ_PORT = Integer.parseInt(UploadFileUtil.getFromPro(
    			"mqconfig", "MQ_PORT"));
    	// 队列管理器
    	private static String MQ_QMANAGER = UploadFileUtil.getFromPro("mqconfig",
    			"MQ_QMANAGER");
    	// mq服务方通道
    	private static String MQ_CHANNEL = UploadFileUtil.getFromPro("mqconfig",
    			"MQ_CHANNEL");
    	// mq通讯编码集
    	private static int MQ_CCSID = Integer.parseInt(UploadFileUtil.getFromPro(
    			"mqconfig", "MQ_CCSID"));
    	// mq请求方发送队列
    	private static String MQ_CLENT_SENDQUEUE = UploadFileUtil.getFromPro(
    			"mqconfig", "MQ_CLENT_SENDQUEUE");
    	// mq请求方接收队列
    	private static String MQ_CLENT_RECQUEUE = UploadFileUtil.getFromPro(
    			"mqconfig", "MQ_CLENT_RECQUEUE");
    	
    	// MQ自带连接池
    	private static MQSimpleConnectionManager myConnMan = null;
    	
    	// 异步长连接接收队列管理器
    	private MQQueueManager queueManager = null;
    
    	// 异步发送队列
    	private MQQueue SendQueue = null;
    	// 异步接收队列
    	public MQQueue ReceiveQueue = null;
    	
    	/**
    	 * 构造方法
    	 */
    	public MqHandler() throws Exception {
    		init();
    	}
    
    	/**
    	 * 异步发送消息
    	 * 
    	 * @param msg
    	 * @param messageId
    	 * @param charSet
    	 * @throws Exception
    	 */
    	public void sendMsg(String msg, String messageId, String charSet)
    			throws Exception {
    
    		try {
    
    			if (StringUtil.isEmpty(charSet)) {
    				charSet = "GBK";
    			}
    
    			byte[] msgId = StringUtil.isEmpty(messageId) ? null : messageId
    					.getBytes(charSet);
    
    			// 打开队列
    			queueManager = new MQQueueManager(MQ_QMANAGER, myConnMan);
    			SendQueue = queueManager.accessQueue(MQ_CLENT_SENDQUEUE,
    					MQC.MQOO_OUTPUT | MQC.MQPMO_NEW_MSG_ID
    							| MQC.MQOO_FAIL_IF_QUIESCING, null, null, null);
    
    			// 初始化消息选项
    			MQPutMessageOptions pmo = new MQPutMessageOptions();
    			// 确保每次发送前为消息自动生成唯一的msgId
    			pmo.options = pmo.options + MQC.MQPMO_NEW_MSG_ID;
    			// 如果设置了该参数,则发送后必须调用commit功能。否则无法将消息发送出
    			pmo.options = pmo.options + MQC.MQPMO_SYNCPOINT;
    
    			// 创建消息对象
    			MQMessage outMsg = new MQMessage();
    			// 设置MQMD格式字段
    			outMsg.format = MQC.MQFMT_STRING;
    
    			outMsg.messageId = msgId == null ? MQC.MQMI_NONE : msgId;
    
    			outMsg.encoding = MQ_CCSID;
    			outMsg.characterSet = MQ_CCSID;
    
    			// 消息发送时必须以字节流的方式发送
    			outMsg.write(msg.getBytes(charSet));
    
    			// 在队列上放置消息
    			SendQueue.put(outMsg, pmo);
    
    			// 和MQC.MQPMO_SYNCPOINT属性对应。如果设置了该属性,则发送后需要提交。
    			queueManager.commit();
    
    		} finally {
    			close(SendQueue);
    		}
    
    	}
    
    	/**
    	 * 接收消息
    	 * @param correlationId
    	 * @param charSet
    	 * @return
    	 * @throws Exception
    	 */
    	public String receive(String correlationId, String charSet)
    			throws Exception {
    
    		try {
    			if (StringUtil.isEmpty(charSet)) {
    				charSet = "GBK";
    			}
    			
    			queueManager = new MQQueueManager(MQ_QMANAGER, myConnMan);
    			ReceiveQueue = queueManager.accessQueue(MQ_CLENT_RECQUEUE,
    					MQC.MQOO_INPUT_AS_Q_DEF | MQC.MQOO_INQUIRE
    							| MQC.MQOO_FAIL_IF_QUIESCING);
    
    			MQMessage respMessage = new MQMessage();
    
    			// 设置MQMD 格式字段
    			respMessage.format = MQC.MQFMT_STRING;
    			// 设置编码格式与MQ服务一致
    			respMessage.encoding = MQ_CCSID;
    			// 设置字符集与MQ服务一致
    			respMessage.characterSet = MQ_CCSID;
    
    			MQGetMessageOptions gmo = new MQGetMessageOptions();
    
    			gmo.options = gmo.options + MQC.MQGMO_WAIT; // 如果设置了该参数,则当前线程将阻塞,直到等到回复的消息或超时
    			gmo.waitInterval = MQC.MQWI_UNLIMITED;
    			if (StringUtil.isNotEmpty(correlationId)) {
    				// 如果设置了该参数,则根据消息的correlId去匹配对应的响应消息
    				gmo.matchOptions = MQC.MQMO_MATCH_CORREL_ID;
    				respMessage.correlationId = correlationId.getBytes(charSet);
    			}
    
    			ReceiveQueue.get(respMessage, gmo);
    
    			byte[] msgBuffer = new byte[respMessage.getMessageLength()];
    
    			respMessage.readFully(msgBuffer);
    
    			String respMsg = new String(msgBuffer, charSet);
    
    			return respMsg;
    		} finally {
    			close(ReceiveQueue);
    		}
    	}
    
    	/**
    	 * 初始化连接
    	 * 
    	 * @param type
    	 * @throws MQException
    	 */
    	private void init() throws MQException {
    		MQEnvironment.hostname = MQ_IP;
    		MQEnvironment.port = MQ_PORT;
    		MQEnvironment.CCSID = MQ_CCSID;
    		MQEnvironment.channel = MQ_CHANNEL;
    		MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY,
    				MQC.TRANSPORT_MQSERIES_CLIENT);
    		
    		myConnMan = new MQSimpleConnectionManager();
            myConnMan.setActive(MQSimpleConnectionManager.MODE_AUTO);
            myConnMan.setTimeout(3600000);
            myConnMan.setMaxConnections(75);
            myConnMan.setMaxUnusedConnections(50);
            MQEnvironment.setDefaultConnectionManager(myConnMan);
            
    		log.info("初始化队列管理器receiverQueueManager....." + MQ_QMANAGER);
    	}
    
    	private void close(MQQueue queue) {
    
    		try {
    			if (queue != null && queue.isOpen) {
    				queue.close();
    			}
    
    			if (queueManager != null) {
    				queueManager.disconnect();
    			}
    
    		} catch (MQException ex) {
    			log.error("", ex);
    		}
    	}
    }
    
    

    网上类似的代码很多,下面对代码中的细节进行解释。
    初始化
    MQEnvironment的静态属性:hostname、port、CCSID等初始化后,MQQueueManager利用这些属性来构造实例对象。
    MQSimpleConnectionManager是简单的连接池,当设置了连接池后MQEnvironment.setDefaultConnectionManager(myConnMan),再使用close方法时,并不会破坏连接,而是归还池中。

    连接池详细内容可以参考官方的API

    消息参数

    • MQOO_FAIL_IF_QUIESCING
      如果队列管理器停顿就取不到消息
    • MQOO_INPUT_AS_Q_DEF
      读取后消息从队列中移除,与之相对的是MQOO_BROWSE,读取后消息还在。
    • MQGMO_WAIT
      当队列中没有消息时,等待有消息时才返回。相当于阻塞IO。
    • MQWI_UNLIMITED
      无限等待时间,必须设置了waitInterval.xxx并和上条属性结合才能起到阻塞的效果。这个等待时间可为任意值。
    • MQOO_INQUIRE
      如果需要获取队列深度等信息的时候,就要加上此参数。
    • MQPMO_NEW_MSG_ID
      确保每次发送前为消息自动生成唯一的msgId。
    • MQPMO_SYNCPOINT
      如果设置了该参数,则发送后必须调用commit功能。否则无法将消息发送出。queueManager.commit()。

    更多参数参见官方说明

    3.2测试类
    import org.jfree.util.Log;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.junit.runners.JUnit4;
    
    import com.ctjsoft.treasury.util.MqHandler;
    
    @RunWith(JUnit4.class)
    public class MqTest {
    	
    	@Test
    	public void mqSend(){
    		try {
    			MqHandler mq = new MqHandler();
    			mq.sendMsg("sq--send1", null, "gbk");
    			mq.sendMsg("sq--send2", null, "gbk");
    			mq.sendMsg("sq--send3", null, "gbk");
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	
    	@Test
    	public void mqReceive(){
    		try {
    			MqHandler mq = new MqHandler();
    			String msg = mq.receive(null, "gbk");
    			System.out.println(msg);
    			String msg1 = mq.receive(null, "gbk");
    			System.out.println(msg1);
    			String msg2 = mq.receive(null, "gbk");
    			System.out.println(msg2);
    			System.out.println("任务完成");
    		} catch (Exception e) {
    			Log.error("", e);
    		}
    	}
    
    }
    
    

    测试过程中出现的问题举例:

    • MQJE001: 完成代码是 2,原因为 2033
      当前消息队列为空,如果不是阻塞模式的获取消息,队列为空就会抛出此异常。
    • MQJE001: MQException 出现:完成代码是 2,原因为 2018
      MQJI002: 未连接至队列管理器。

      消息通道服务被关闭
    • 原因为 2080
      代表消息的实际长度超过了你在程序代码中设置的缓冲区长度

    感觉有用请点赞

    展开全文
  • 该文档是我初学WAS的服务器部署文档,里面很详细的记录了我没一个操作截图和详细的文字描述。手把手教小白学会部署was。如果看了文档还学不会,那么记得叫人打我,一定要叫人打我!
  • 打开MQ安装程序,选择下一步,默认安装WebSphere MQ, 完成MQ的安装工作,启动WebSphere MQ, 服务器配置,选择新建队列管理器,创建名为"mq"的队列管理器,其他选项默认不变,点...
    1. 打开MQ安装程序,选择下一步,默认安装WebSphere MQ,

      IBM WebSphere MQ安装及配置详解
      IBM WebSphere MQ安装及配置详解
    2. 完成MQ的安装工作,启动WebSphere MQ,

      IBM WebSphere MQ安装及配置详解
      IBM WebSphere MQ安装及配置详解
    3. 服务器配置,选择新建队列管理器,创建名为 "mq"的队列管理器,其他选项默认不变,点"下一步"

      IBM WebSphere MQ安装及配置详解
      IBM WebSphere MQ安装及配置详解
    4. 允许在 TCP/IP上进行队列管理器的远程管理,点击"下一步",完成MQ队列管理器的创建。

      IBM WebSphere MQ安装及配置详解
    5. 新建本地队列,在mq下创建名为"MQ_send"的本地队列(用户可以根据自己的需求更改本地队列的名字和数量),其他选项默认即可。

      IBM WebSphere MQ安装及配置详解
      IBM WebSphere MQ安装及配置详解
    6. 在 mq下创建名为"MQ_CHL"的服务器通道,其他选项默认即可。

      IBM WebSphere MQ安装及配置详解
      IBM WebSphere MQ安装及配置详解
    7. 在 MQ服务器端的计算机用户中添加MQ客户端所在计算机的系统用户。例如:我的MQ客户端所在的计算机用户名为Administrator,则在服务器端系统中添加名为"Administrator"的用户。具体步骤如下:

      <1>点击 "开始"->"控制面板"->"管理工具"->"计算机管理"->"本地用户和组"->"用户",选择Administrator点右键,打开属性面板,选择“隶属于”把mqmt添加进去。如下图所示:

      (如果客户端计算机使用的其他的用户名,在服务器端新建一个用户名,同样操作,把用户名添加隶属于mqm组里面)

      IBM WebSphere MQ安装及配置详解
      IBM WebSphere MQ安装及配置详解
      IBM WebSphere MQ安装及配置详解
       
      注意:
      1. 客户端连接MQ服务出现2035错误MQRC_NOT_AUTHORIZED

        IBM WebSphere MQ安装及配置详解
      2.  

        找到mq的安装目录下的bin目录,在cmd环境下执行命令runmqsc 然后执行命令 alter qmgr chlauth(disabled) 把权限验证下掉就可以了,如下图所示:

        IBM WebSphere MQ安装及配置详解
      3.  MQ常用命令:

        登录MQI,一般是cd到MQ安装目录下bin,然后切换mqm账户,mqm账户是mq默认的管理员账户。可以使用命令dspmq 查看队列管理器机器状态,若服务未启动,可使用strmqm命令启动服务(注:队列管理器名称是分区大小写的),然后执行runmqsc 队列管理器,即可登录到MQI。

         

        查询CCSID可以使用命令:display qmgr,查看ccsid属性即可。

        查询Listener监听端口,可使用DISPLAY LSSTATUS(*) ALL。查看port属性即可。

        --查看MQ版本--

        dspmqver

        --查看队列状态--
        dspmq

        --创建队列管理器--
        crtmqm -q ECIS_QM

        --删除队列管理器--
        dltmqm ECIS_QM

        --启动队列管理器--
        strmqm ECIS_QM

        --关闭队列管理器--
        endmqm -i ECIS_QM 立即停止
        endmqm -p ECIS_QM 强制停止

        --运行队列管理器--
        runmqsc ECIS_QM

        --定义监听器--
        DEFINE LISTENER(LSR_4_ECIS_QM) TRPTYPE(TCP) PORT(1616) CONTROL(QMGR) REPLACE
        START LISTENER(LSR_4_ECIS_QM)

        --定义通道--
        DEFINE CHANNEL(ECIS.SVRCONN) CHLTYPE(SVRCONN) MCAUSER('mqm') REPLACE

        --启动通道--
        runmqchl –c ChlName –m ECIS_QM

        --启动侦听--
        runmqlsr –t TCP –p 1616 –m ECIS_QM
        endmqlsr -m ECIS_QM

        --定义队列--
        DEFINE QL(Q_SVC2ADP_4_TELNET) REPLACE
        DEFINE QL(Q_SVC2ADP_4_JDBC) REPLACE
        DEFINE QL(Q_SVC2ADP_4_HTTP) REPLACE
        DEFINE QL(Q_SVC2ADP_4_SOCKET) REPLACE

        --删除队列--
        delete QL(Q_SVC2ADP_4_TELNET)

        --查看监听器--
        display listener (LSR_4_ECIS_QM)

        --查看通道--
        dis chs(*)

        --查看通道--
        display ql(*) [all]

        --查看队列深度--
        display ql(Q_SVC2ADP_4_HTTP) curdepth

        --清除队列消息--
        clear ql(Q_SVC2ADP_4_HTTP)

        --查看CCSID--
        display qmgr all

        --修改CCSID--
        ALTER QMGR [FORCE] CCSID(5488)

         

        逻辑定义
        ##################################################
        ./JMSAdmin

        DELETE QCF(T_ECIS_QCF)

        DELETE Q(T_ECIS_Q_SVC2ADP_TELNET) 
        DELETE Q(T_ECIS_Q_ADP2SVC_TELNET)
        DELETE Q(T_ECIS_Q_SVC2ADP_JDBC)
        DELETE Q(T_ECIS_Q_ADP2SVC_JDBC)

        DELETE Q(T_ECIS_Q_SVC2ADP_HTTP)
        DELETE Q(T_ECIS_Q_ADP2SVC_HTTP)
        DELETE Q(T_ECIS_Q_SVC2ADP_SOCKET)
        DELETE Q(T_ECIS_Q_ADP2SVC_SOCKET)

        DEFINE QCF(T_ECIS_QCF) DESC() TRAN(CLIENT) HOST(10.151.128.13) QMGR(T_ECIS_QM) CHAN(T_ECIS.SVRCONN) PORT(2626) CCSID(5488)

        DEFINE Q(T_ECIS_Q_SVC2ADP_TELNET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_TELNET) CCSID(5488)
        DEFINE Q(T_ECIS_Q_ADP2SVC_TELNET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_TELNET) CCSID(5488)
        DEFINE Q(T_ECIS_Q_SVC2ADP_JDBC) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_JDBC) CCSID(5488)
        DEFINE Q(T_ECIS_Q_ADP2SVC_JDBC) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_JDBC) CCSID(5488)

        DEFINE Q(T_ECIS_Q_SVC2ADP_HTTP) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_HTTP) CCSID(5488)
        DEFINE Q(T_ECIS_Q_ADP2SVC_HTTP) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_HTTP) CCSID(5488)
        DEFINE Q(T_ECIS_Q_SVC2ADP_SOCKET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_SVC2ADP_4_SOCKET) CCSID(5488)
        DEFINE Q(T_ECIS_Q_ADP2SVC_SOCKET) DESC() QMGR(T_ECIS_QM) QUEUE(Q_ADP2SVC_4_SOCKET) CCSID(5488)

         

         

         

         


        WebSphere MQ常用命令及配置
        ################################################## 
        //创建本地队列Q
        DEFINE   QLOCAL (Q)
        //将本地队列Q 的最大深度设置为5
        ALTER QLOCAL (Q) MAXDEPTH(5)
        //重新创建本地队列Q 如果Q已经存在,则将其全部属性重置为缺省属性
        DEFINE QLOCAL (Q) REPLACE
        //创建远程队列
        DEFINE QREMOTE(QRNAME) RNAME(AAA) RQMNAME(QMGRNAME) XMITQ(QTNAME)
        //创建传输队列
        define qlocal(CLV_HQ_TRAN) usage(xmitq) INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(REV_CLV) TRIGTYPE(EVERY) TRIGGER REPLACE
        //创建接收端通道C
        DEFINE CHANNEL(C) CHLTYPE(RCVR)
        //创建发送方通道C ,连接对方的IP为10.10.10.10  端口为1414 通道连接的传输队列为XQ
        DEFINE CHANNEL(C) CHLTYPE(SDR) CONNAME(’10.10.10.10 (1414)’) XMITQ(XQ)
        //创建请求方通道
        DEFINE CHANNEL(D) CHLTYPE(RQSTR) CONNAME(’10.10.10.10 (1414)’)
        //创建服务器通道
        DEFINE CHANNEL (D) CHLTYPE(SVR) xmitq (XQ1)
        //创建服务器连接通道
        DEFINE CHANNEL(E) CHLTYPE(SVRCONN)  REPLACE

        //显示所有远程队列
        display qremote (*)
        //显示所有通道
        Display channel (*)

        //定义死信队列
        DEFINE QLOCAL(QUEUE) DEFPSIST(YES) REPLACE

        //设定队列管理器的死信队列
        ALTER QMGR DEADQ(QUEUE)

        设置MaxChannels和MaxActiveChannels属性(最大连接数)
        ##################################################
        MaxChannels和MaxActiveChannels分别代表队列管理器允许配置的通道的最大个数和允许同时运行的通道的个数,MaxChannels的缺省值是100,MaxActiveChannels的缺省值与MaxChannels相同。如果您的并发通道连接个数超过了100,您需要修改这两个参数。这对于大并发的Client/Server间通讯尤为重要。
        在unix平台,修改qm.ini文件,添加如下所示(路径:/var/mqm/qmgrs/HQ_SVR): 
        Channels:
        MaxChannels = 3000   (最大通道数)
        MaxActiveChannels = 3000   (最大活动通道数)
        PipeLineLength=2
        AdoptNewMCA=ALL
        然后重启MQ

         

         

         

         


        //定义持久性队列:
        DEFINE QLOCAL(QNAME) DEFPSIST (YES) REPLACE

        传输队列管理
        ##################################################
        1:定义传输队列
        DEFINE QLOCAL(Q_TRANSFER) USAGE(XMITQ)
        注:
        Q_TRANSFER:传输队列名

        下面定义一个输入队列并带触发器
        DEFINE QLOCAL(Q_TRANSFER) USAGE(XMITQ) DEFPSIST(YES)  INITQ(SYSTEM.CHANNEL.INITQ) TRIGDATA(DP_RCHANNEL) REPLACE
        注:
        参数1:传输队列名称(Q_TRANSFER)
        参数5:触发器数据(DP_RCHANNEL),也就是触发后要启动的通道。

        2:在传输入队列上定义触发器
        DPCIS_Q_TRANSFER:传输队列
        触发器数据:DP_RCHANNEL,即:发送通道,触发时启动该通道
        alter qlocal(DPCIS_Q_TRANSFER) TRIGDATA('DP_RCHANNEL') TRIGTYPE(every) TRIGGER initq('SYSTEM.CHANNEL.INITQ')

        远程队列管理
        ##################################################
        通过输入以下命令来定义远程队列定义:
        define qremote(Q1) rname(Q1) rqmname(QM_APPLE) xmitq(QM_APPLE)
        注:
        参数1:队列名称(发送方远程队列名)
        参数2:远程队列(接收方的本地接收队列名)
        参数3:远程队列管理器(接收方队列管理器名)
        参数4:传输队列(发送方传输队列名)

        通道管理
        ##################################################
        1:创建接收方通道
        DEFINE CHANNEL(SDR_ TEST)  CHLTYPE(RCVR)  REPLACE 
        define channel(Q_R_CHANNEL2) chltype(RCVR) replace
        注:
        参数1:接收方通道名称
        replace:表示有该通道了替换

        2:创建发送方通道 
        DEFINE CHANNEL(SDRNAME)  CHLTYPE(SDR)  CONNAME (‘100.100.100.215(1418)’)  XMITQ(QTNAME)  REPLACE
        其中CHLTYPE可以是:SDR、SVR、RCVR、RQSTR、CLNTCONN、SVRCONN、CLUSSDR和CLUSRCVR。

        define channel(DP_RCHANNEL) chltype(SDR) conname('10.101.2.3 (1414)') xmitq(Q_TRANSFER) replace
        注:
        通道名称:DP_RCHANNEL (发送方通道的名称) 
        传输队列:Q_TRANSFER  (发送方传输队列的名称)

        3:启动通道
        start channel(QM_ORANGE.QM_APPLE)

        4:查看通道状态
        dis chs(*)

        侦听器管理
        ##################################################
        1:定义侦听器
        DEFINE LISTENER(TCPLS1) TRPTYPE(TCP) PORT(1414)  REPLACE

        2:启动侦听器
        start listener(TCPLS1)
        3:显示侦听器信息
        display listener(tcpls1)

        创建触发
        ##################################################
        一般设置MQ触发器的目的有两种, 一是自动启动发送端通道, 二是监视队列消息, 一旦发现新的消息, 则利用触发器启动相应的处理进程
        如果是利用触发器自动启动发送端通道, 使用方法1, 如果是利用触发器启动用户进程, 使用方法2

        方法1
        A 在传输通道上设置触发器, 打开触发器控制, 类型为"第一个"
        B 初始队列为SYSTEM.CHANNEL.INITQ, 该队列为MQ专用的通道启动队列, 不需要手工启动其触发监视器
        C 触发器数据为发送端通道名称, 例如 QAG.50
        D 在发送端通道不活动的情况下, 在传输通道放入消息测试

        方法2
        A 创建一个触发启动队列, 其模板为SYSTEM.DEFAULT.INITIATION.QUEUE
        runmqsc
        define qlocal (MQ.TRIGER.INIQUEUE) like (SYSTEM.DEFAULT.INITIATION.QUEUE)
        B 定义进程 所谓进程就是触发器要触发的程序本例中进程名称:TRIGER.PROGRAM 应用程序标识为:"Notepad.exe"
        C 在队列上设置触发器, 一般为本地队列, 打开触发器控制, 类型根据自己的需要选择"第一个", "每个" 还是 "根据消息数量"
        D 初始队列选择A中创建的触发启动队列, 例如MQ.TRIGER.INIQUEUE, 进程名称设置为B中定义的进程名称, 例如TRIGER.PROGRAM
        E 启动触发监视器 runmqtrm -m QAGWY -q MQ.TRIGER.INIQUEUE
        F 在本地队列放入消息进行测试

        方法2也可以完成方法1的工作, 只需要将进程定义中的应用程序标识改为 runmqchl -m QAGWY -c QAG.50 就可以了, 但MQ中提供了专用的通道启动队列,
        而该队列不需要手工启动触发监视器, 因此方法1比方法2的步骤要少, 配置也简单, 所以在利用触发器自动启动发送端通道的情况下, 还是方法1更好.

    转载于:https://www.cnblogs.com/songjn/p/8514904.html

    展开全文
  • WebSphere® Integration Developer 的先前版本无法升级到版本 7.0。不同版本的 WebSphere Integration Developer 可以在工作站上共存,但它们不得安装在同一目录中WebSphere Integration Developer 功能部件。功能...
    WebSphere® Integration Developer 的先前版本无法升级到版本 7.0。不同版本的 WebSphere Integration Developer 可以在工作站上共存,但它们不得安装在同一目录中

    WebSphere Integration Developer 功能部件。
    功能部件组功能部件描述缺省情况下已选择
    IBM Installation Manager 1.3.3 Installation Manager 帮助您安装 WebSphere Integration Developer 和相关工具。是(强制安装)
    IBM Lotus Forms Designer 3.5.1 修订包 1 Lotus Forms Designer 允许您创建和编辑 Lotus Forms 以用作人员任务的用户界面。是(如果您在 Installation Manager 的第一个“安装”面板上未选择安装 Lotus Forms,那么不会显示此选项)。
    IBM WebSphere Integrated Developer 7.0.0.0 WebSphere Integration Developer 的核心功能。提供综合开发环境中用于构建集成解决方案的工具。是(强制安装)
    用于电子邮件、平面文件、FTP 和 JDBC 的 IBM WebSphere Adapter 使用 WebSphere Adapter for Email 向电子邮件服务器发送电子邮件和从该服务器接收电子邮件。使用 WebSphere Adapter for Flat Files 读取和写入本地文件系统上的文件。使用 WebSphere Adapter for File Protocol(FTP)读取和写入远程系统上的文件。
    其他 IBM WebSphere Adapter 适配器访问企业信息系统(EIS)上的程序和数据。
    Domino 适配器创建与 Lotus Domino Server 交换信息的服务。创建集成过程,这种过程可以创建和访问 Domino 文档,而不必进行特殊编码。在出站处理期间,该适配器支持 CreateRetrieveUpdateDeleteExists  RetrieveAll 操作。适配器接收来自服务的业务对象形式的请求,它处理该请求并将响应发送回调用组件;在入站处理期间,适配器在一定时间间隔轮询 Domino 服务器以获取可以进行处理的 Domino 文档。
    CICS 适配器创建和访问服务以与客户信息控制系统(CICS)事务系统上的 COBOL、C 和 PL/I 程序及数据交换信息。
    IMS 适配器创建和访问服务以使用 IBM 信息管理系统 (IMS) 事务系统上的 COBOL、C 和 PL/I 程序及数据交换信息。
    iSeries 适配器创建和访问服务,这些服务使用程序调用标记语言 (PCML) 标准来调用目标 IBM i 机器上的 RPG 程序、COBOL 程序和服务程序,并将消息发送到 IBM i 数据队列或从中接收消息。
    J D Edwards 适配器创建和访问服务以使用 WebSphere Adapter for JD Edwards EnterpriseOne 与 JD Edwards EnterpriseOne Server 交换信息。
    JDBC 适配器创建和访问服务以使用 WebSphere Adapter for JDBC 与数据库系统交换信息。
    Oracle 适配器创建和访问服务以便与 Oracle E-Business Suite 交换信息。
    PeopleSoft 适配器创建和访问服务以与 WebSphere Adapter for PeopleSoft Enterprise 交换信息。
    SAP 适配器创建和访问服务以便与 SAP 服务器交换信息。
    Siebel 适配器创建和访问服务以便与 Siebel Business Application Server 交换信息。
    本地帮助内容 安装帮助内容的本地版本,或者可以使用因特网上提供的版本。

    监控模型编辑器
     提供了向导、库和测试环境来帮助您创建和测试监控模型。它将安装在 WebSphere Integration Developer 环境中。
    客户机开发工具 大多数应用程序需要客户或人员可以用于输入数据的客户机接口。提供这组工具以使您能够为应用程序创建定制客户机。
    Web 开发工具提 供了使用 JavaServer Faces(JSF)、JavaServer Pages(JSP)、servlet 和 HTML 来构建 Web 2.0 和 Java EE Web 应用程序的工具。还提供了用于开发 Java EE Web 应用程序的 Apache Struts 框架。
    Portlet 和门户网站工具提供工具来创建、定制、测试、调试和部署门户网站应用程序。门户网站开发工具支持 IBM® WebSphere Portal V6.0 和 V6.1。
    生命周期集成客户机 提供资产存储库并为 IBM Rational Team Unifying Platform 提供集成和客户机插件。
    资产存储库客户机资产存储库客户机是用于存储和共享业务过程管理(BPM)工件的中央式可访问位置。必须在服务器上安装和配置 IBM Rational® Asset Manager V 7.1,资产存储库客户机才能与该服务器连接。
    Rational ClearCase® SCM Adapter提供 IBM Rational ClearCase SCM 和 ClearCase MVFS 插件,这些插件可实现在同时安装了 ClearCase VOB 和视图服务器时,使用快照视图和动态视图在 ClearCase versioned object base(VOB)中对软件工件进行版本控制。
    Rational Team Concert - 客户机“Rational Team Concert - 客户机”包含从工作站连接到 Rational Team Concert Server 并与您的小组交互所需的一切功能。
    其他开发工具 提 供关系数据库工具以处理表、视图和过滤器。有了这些工具,您可以通过对数据库表进行反向工程或使用 DDL 脚本来创建物理数据库模型。还可以使用这些工具来创建 SQL 语句、DB2 例程(如存储过程和用户定义的函数)以及各种类型的文件。此外还提供了一个图形编辑环境,可以使用该环境来描述 Java 类、企业 bean 以及其他代码元素和工件。

    将 WebSphere Application Server 导入到 Installation Manager开始菜单启动 IBM Installation Manager。
     WTE_Disk\repository\repository.config 添加至存储库列表
    选择“导入”。
    选择 WebSphere Application Server 安装位置,并遵循 GUI 的提示完成全部操作。

    产品:IBM WebSphere Application Server
    创建者:IBM Installation Factory V7.0.0.7
    修订版:Network Deployment
    软件包:IBM WebSphere Application Server
    版本:7.0.0.7

    安装ESB服务和测试WebSphere Process Server前不能创建WAS概要文件
    步骤有三:
    一、安装WID
    二、安装WAS
    三、安装测试环境ESB和WPS
    安装到第三的时候,IM会报错,提示“WebSphere Process Server和WID不能在同一个软件包组中”这个时候,需要用IM将第二步安装的WAS导入进来,否则第三部无法安装
    展开全文
  • 先在websphere和 weblogic里配置一个数据源,jndi名叫offsetJndi spring里配置数据源 这种配置方法 websphere weblogic通用 <beanid="dataSource" class="org.springframework.jndi....
  • rm -rf /home/wasapp/IBM/WebSphere/AppServer/profiles/AppSrv03/installedApps/localhostNode03Cell/SunTXM_war.ear rm -rf /opt/IBM/WebSphere/AppServer/profiles/AppSrv02/installedApps/cicNode01Cell/
  • WebSphere Application Server 是IBM企业级应用服务器,与WAS6,WAS7,WAS8相比较而言 WAS9发生了很大的改变,其安装介质和以前截然不同。本文档用图例的方式详细讲解WebSphere的下载和安装过程,以及部署应用
  • http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0812_cuiye/ ...集群是搭建高可用性环境的有效解决...本文将向您介绍 WebSphere Portal V6.1 集群的搭建过程,配置过程中经常遇到的问题及
  • Websphere MQ消息序号Message Sequence详解

    千次阅读 2016-07-03 01:00:12
    一.什么是MQ的消息序号?  通道为每一条消息的传送分配了一个序列号,它会自动累计增值。  消息序列号由发送通道分配,是通道的一个永久属性,每当发送一条消息,消息序列号就加一。  通道的相关属性SEQWRAP ...
  • 上一篇介绍了WebSphere MQ的安装过程,如果你现在还没有安装WebSphere MQ,不妨看一看安装教程。 在常见的互联网消息中间件中,WebSphere MQ常见与银行业务使用,IBM 消息中间件MQ以其独特的安全机制、简便快速的...
  • WebSphere MQ"->"WebSphere MQ 资源管理器",进入WebSphere MQ 资源管理器界面。如下图所示: 图9 服务端配置 2)创建名为 "QM_JACK"的队列管理器 选中 "队列管理...
  • websphere V6.1 入门教程详解 公司在服务器上使用的是linux+ibm was7(websphere application server v7.0) 与服务器连接的方式是采用基于ssh协议的方式。在这里顺便来谈谈ssh。此ssh(security shell 字面意思,...
  • WebSphere服务器 启动和停止 命令详解

    千次阅读 2008-04-08 15:00:00
    用法:stopServer [options] options: -nowait -quiet -logfile -replacelog -trace -timeout -statuspo
  •  IBM WebSphere MQ产品支持应用程序通过不同组件如处理器,子系统,操作系统,以及通信协议的网络彼此通信。例如:IBM WebSphere MQ支持35种以上的不同操作系统。  IBM WebSphere MQ支持两种不同的应用程序编程...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 148
精华内容 59
关键字:

websphere详解