我设法从 MQ 客户端向 MQ 服务器发送消息。在 MQ 客户端中,我输入 amqsputc [queue_local] [name_qmgr]
并在输入消息后返回 Sample AMQSPUT0 end
这意味着它已正确发送。但是,当我尝试使用 amqsbcg [queue_local] [name_qmgr] 查看 MQ 服务器中的消息时,它会向我抛出一条错误消息:
Sample AMQSGET0 start
MQCONNX ended with reason code 2058
当队列管理器不存在或名称拼写错误时,会出现此错误,但情况并非如此。
当我验证本地队列时,它显示CURDEPTH(1)
,这意味着队列上有一条消息(已发送)。但我不知道为什么它不允许我收到消息。在队列管理器错误文件中,它仅显示如下内容:
the channel AMQ.... connection ended
我检查了为此测试配置的 channel :
AMQ8414: Display Channel details.
CHANNEL(A03ZCIWAS) CHLTYPE(SVRCONN)
ALTDATE(2017-09-07) ALTTIME(00.35.17)
CERTLABL( ) COMPHDR(NONE)
COMPMSG(NONE)
DESCR(Server-connection to ...)
DISCINT(0) HBINT(300)
KAINT(AUTO) MAXINST(100)
MAXINSTC(90) MAXMSGL(4194304)
MCAUSER(nobody) MONCHL(QMGR)
RCVDATA( ) RCVEXIT( )
SCYDATA( ) SCYEXIT( )
SENDDATA( ) SENDEXIT( )
SHARECNV(10) SSLCAUTH(REQUIRED)
SSLCIPH( ) SSLPEER( )
TRPTYPE(TCP)
AMQ8414: Display Channel details.
CHANNEL(A03ZCIWAS) CHLTYPE(CLNTCONN)
AFFINITY(PREFERRED) ALTDATE(2017-09-07)
ALTTIME(02.40.42) CERTLABL( )
CLNTWGHT(0) COMPHDR(NONE)
COMPMSG(NONE) CONNAME(XX.XX.XX.XX)
DEFRECON(NO)
DESCR(Client connection to ....)
HBINT(300) KAINT(AUTO)
LOCLADDR( ) MAXMSGL(4194304)
MODENAME( ) PASSWORD( )
QMNAME(AEDMQ03A) RCVDATA( )
RCVEXIT( ) SCYDATA( )
SCYEXIT( ) SENDDATA( )
SENDEXIT( ) SHARECNV(10)
SSLCIPH( ) SSLPEER( )
TPNAME( ) TRPTYPE(TCP)
USERID( )
CONNAME(xx.xx.xx.xx)
是 MQServer 的正确 IP 地址,变量 MQSERVER 设置如下:
MQSERVER=[channel_svrconn]/tcp/'ip_adress_MQServer(1414)'
端口也很好。
最佳答案
您提供的输出表明您正在执行 amqsget
而不是 amqsbcgc
。
我注意到您的问题提到了 amqsbcg
而不是 amqsbcgc
。示例名称末尾的 c
表示它是该程序的客户端版本。
amqsbcg = Server Binding version
amqsbcgc = Client version
如果您执行 amqsget
或 amqsbcg
并指定不在同一服务器本地的队列管理器,您将收到 2058
。
解决方案是使用 amqsgetc
或 amqsbcgc
而不是 amqsget
或 amqsbcg
关于ibm-mq - amqsbcg 未从 MQ 客户端获取消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46147199/