运行GET示例amqsget
时,我可以在队列中正常连接...
C:\Program Files\IBM\MQ\bin>amqsget QUEUE1
Sample AMQSGET0 start
no more messages
Sample AMQSGET0 end
但是在使用 amqsgetc
时出现错误“ MQCONNX以原因代码2058结尾” :
C:\Program Files\IBM\MQ\bin>amqsgetc QUEUE1
Sample AMQSGET0 start
MQCONNX ended with reason code 2058
在末尾显式添加队列管理器也无法正常工作。
IBM的article总结了问题原因,但仍不清楚为什么一个起作用而另一个不起作用。 other article解释了示例程序。
答案 0 :(得分:3)
amqsget 将使用共享内存管道连接到本地计算机上的队列管理器。这意味着只要它与队列管理器在同一台计算机上,它就可以找到队列管理器并连接到它。
amqsgetc 将通过网络连接到队列管理器。因为默认情况下,它不知道队列管理器在哪里,所以您需要告诉它如何连接到队列管理器。您可以通过以下三种方式之一告诉amqsgetc(或任何客户端应用程序)如何连接队列管理器:
答案 1 :(得分:2)
以'c'结尾的示例程序与MQ客户端库而不是服务器库链接。因此,它们通过网络连接(通常是TCP)而不是共享内存进行连接。
您链接到的文章提供了有关在确定如何到达远程队列管理器时使用的优先级顺序的更多信息,但总而言之,客户端很可能不知道如何联系队列管理器。
您将需要通过连接CCDT或使用MQSERVER environment variable来告知客户端用于连接队列管理器的连接详细信息。