通过Java程序

时间:2015-07-23 07:41:12

标签: java ibm-mq

我对IBM MQ相对较新。

我的要求是通过IBM MQ Client连接到远程IBM MQ服务器队列。然后,使用IBM MQ Java API通过MQ Client访问队列。

这是正确的方法吗?

我已经在本地计算机上设置了IBM MQ Server,IBM MQ Explorer,创建了一个队列管理器Queue。我还编写了一个Java程序,使用IBM MQ API连接到MQ。

此Java程序具有以下参数:

String queueManagerName = "QUEUE.MANAGER.1";
String userID = "";
String password = "";
String queueName = "QUEUE1";
String hostName = "localhost";
String channel = "CHANNEL1";
int port = 1414;

在这里,一切似乎都很好。我可以通过Java程序从/向MQ服务器队列发送/接收消息。

现在,我已在同一台机器上安装了IBM MQ Client,如何通过MQ Client使用java程序连接到同一服务器队列?

我的要求是:

  1. 在不同的计算机上运行的MQ服务器。
  2. 使用本地计算机上安装的MQ客户端连接到服务器队列。
  3. java程序应该通过本地MQ客户端向服务器队列发送/接收消息。
  4. 我怎么能实现这个目标?

2 个答案:

答案 0 :(得分:0)

您需要将应用程序的连接参数指向连接到远程计算机上的队列管理器。例如:

String queueManagerName = "<Remote queue manager name>";
String userID = "<valid user existing on remote machine>";
String password = "<password for user>";
String hostName = "<remote host name>";
String channel = "<Channel name on remote queue manager>";
int port = <port number where queue manager is listening>;

但是您需要在远程队列管理器上配置身份验证和授权以便应用程序进行连接。如果未配置,则会收到MQRC 2035 - NOT_AUTHORIZED错误。

答案 1 :(得分:0)

String mqHost = null; // Hostname
String mqPort = null; // Port
String mqChannel = null; // Channel 
String mqQMgr = null;   // Queue Manager
MQQueueManager qMgr = null;
MQEnvironment.hostname = mqHost;
MQEnvironment.port = Integer.valueOf(mqPort).intValue();
MQEnvironment.channel = mqChannel;
MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES);
MQEnvironment.userID = "USERID";