2010-02-24 113 views

回答

6

使用JNDI進行的connectionFactory /目的地查找,提供InitialContext具有以下屬性:

java.naming.provider.url=<ip>:<port, default is 1414>/<channel name, default channel is SYSTEM.DEF.SVRCONN> 
java.naming.factory.initial=com.ibm.mq.jms.context.WMQInitialContextFactory 
java.naming.security.authentication=none 
java.naming.security.credentials= 
java.naming.security.principal= 

使用WAS(WebSphere應用服務器)隊列,屬性將是如下:

java.naming.provider.url=iiop://<ip>:<port, the defualt is 2809> 
java.naming.factory.initial=com.ibm.websphere.naming.WsnInitialContextFactory 
java.naming.security.authentication=none 
java.naming.security.credentials= 
java.naming.security.principal= 

其餘部分將如下:

Properties config = new Properties(); 
config.load(new FileInputStream("connectionConfig.properties"));// this file would contain the properties above 
InitialContext context = new InitialContext(config); 
ConnectionFactory factory = (ConnectionFactory) context.lookup("ConnectionFactory");// connection factory name 
Destination destination = (Destination) context.lookup("destination");// queue/topic name 
+0

我無法找到com.ibm.websphere.naming.WsnInitialContextFactory any where,help – 2018-02-20 13:42:43

2

這裏的a tutorial,可以幫助:

另外,一定要使用文檔的WMQ的正確版本。 V7.0是當前和v6.0的支持,直到2011年9月無論你正在使用,看看使用Java手冊正確的版本:

v6.0 manual
v7.0 manual

2

使用IBM客戶端API

  import com.ibm.mq.MQEnvironment; 
      import com.ibm.mq.MQQueue; 
      import com.ibm.mq.MQQueueManager; 
      import com.ibm.mq.constants.CMQC; 

      public class QueueMonitoring { 

       public static void main(String[] args) { 
        int openOptions = CMQC.MQOO_INQUIRE | CMQC.MQOO_INPUT_AS_Q_DEF; 
        MQEnvironment.hostname = "192.168.59.103"; 
        MQEnvironment.port = 1414; 
        MQEnvironment.channel = "SYSTEM.DEF.SVRCONN"; 
        MQEnvironment.properties.put(CMQC.TRANSPORT_PROPERTY,CMQC.TRANSPORT_MQSERIES); 

        MQQueueManager qMgr; 
        try { 
         qMgr = new MQQueueManager("QM1"); 
         MQQueue destQueue = qMgr.accessQueue("DOCKERQ", openOptions); 
         System.out.println("Queue size:" + destQueue.getCurrentDepth()); 
         destQueue.close(); 
         qMgr.disconnect(); 

        } catch (Exception e) { 
         e.printStackTrace(); 
        } 

       } 
       } 
2

你需要創建一個MQQueueConnectionFactory豆,並在其中設置所需的性能。

<bean id="queueConnectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory"> 
    <property name="transportType" ref="transport" /> 
    <property name="queueManager" value="queueManagerName" /> 
    <property name="hostName" value="hostName" /> 
    <property name="port" value="portNumber" /> 
    <property name="channel" value="channelName" /> 
</bean> 
<bean id="transport" 
    class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean"> 
    <property name="staticField"> 
     <value> 
      com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP 
     </value> 
    </property> 
</bean>