通过 java 程序使用 MQ 客户端访问远程 IBM MQ 服务器队列

Access Remote IBM MQ Server Queue using MQ Client through a java program

我对 IBM MQ 比较陌生。

我的要求是通过 IBM MQ 客户端连接到远程 IBM MQ 服务器队列。然后,使用 IBM MQ Java API.

通过 MQ Client 访问队列

这是正确的方法吗?

我已经在我的本地机器上安装了 IBM MQ 服务器和 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 程序 send/receive 消息 from/to MQ 服务器队列。

现在,我已经在同一台机器上安装了 IBM MQ Client,如何通过 MQ Client 使用 java 程序连接到同一个 Server Queue?

我的要求是:

  1. MQ 服务器 运行 在另一台机器上。
  2. 使用安装在本地计算机上的 MQ 客户端连接到服务器队列。
  3. java 程序应该 Send/Receive 消息通过本地 MQ 客户端发送到服务器队列。

如何实现?

您需要为您的应用程序指定连接参数以连接到远程机器上的队列管理器。例如:

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 错误。

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";