1 ibm-mq
我有这样的需求,比如用用户ID而不是通道连接MQ。
我尝试在没有chanel的情况下将用户ID和密码设置为MQEnvironment类,但出现以下异常。
com.ibm.mq.jmqi.JmqiException: CC=2;RC=2540;AMQ9520: Channel not defined remotely. [3=].
Run Code Online (Sandbox Code Playgroud)
请指导我,是否可以编写java客户端来使用用户id而不是通道连接MQ。
MQ 应用程序有两种方式连接到队列管理器:绑定和客户端模式。
绑定模式意味着您的 MQ 应用程序与队列管理器在同一服务器上运行。因此,MQI 调用将不会使用网络资源。
客户端模式意味着您的 MQ 应用程序可以在任何服务器上运行,并且在发出 MQI 调用时将使用网络资源。对于 MQCONN 调用,除了队列管理器名称之外,您还需要主机名/IP 地址、端口号和通道名称。
无论哪种情况,您的 MQ 应用程序都应该提供其用户凭据(用户 ID 和密码)。
最后,不要使用 MQEnvironment 类。使用 HashTable 并将其传递给队列管理器构造函数类要好得多。IE
Hashtable<String, Object> mqht = new Hashtable<String, Object>();
mqht.put(CMQC.CHANNEL_PROPERTY, channelName);
mqht.put(CMQC.HOST_NAME_PROPERTY, hostName);
mqht.put(CMQC.PORT_PROPERTY, new Integer(portNumber));
mqht.put(CMQC.USER_ID_PROPERTY, userID);
mqht.put(CMQC.PASSWORD_PROPERTY, password);
try
{
MQQueueManager qMgr = new MQQueueManager(qMgrName, mqht);
System.out.println("Successfully connected to "+ qMgrName);
}
catch (com.ibm.mq.MQException mqex)
{
System.out.println("MQException cc=" +mqex.completionCode + " : rc=" + mqex.reasonCode);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6503 次 |
| 最近记录: |