[英]Using JMS to connect to IBM MQ
我想使用JMS連接到IBM MQ。 如何指定queuemanager,channel和其他屬性?
使用JNDI進行connectionFactory / destinations查找,為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 Application Server)隊列,屬性如下:
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
您需要創建MQQueueConnectionFactory bean並在其中設置所需的屬性。
<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>
使用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();
}
}
}
最好的方法是使用命令行。 太有趣了。 您可以從http://publib.boulder.ibm.com/iseries/v5r2/ic2924/books/csqzaj05.pdf下載命令參考手冊。
如果您的MQ服務器在Windows機器上運行,您可以選擇使用MQExplorer並以圖形方式對其進行配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.