我设法从MQ客户端向MQ服务器发送消息。在MQ Client I amqsputc [queue_local] [name_qmgr]中,输入消息后返回" Sample AMQSPUT0 end"这意味着它被正确发送。但是当我尝试使用amqsbcg [queue_local] [name_qmgr]在MQ服务器中查看消息时,它会抛出一条错误消息:
"示例AMQSGET0启动 MQCONNX以原因代码2058"结束,当队列管理器不存在或名称拼写错误时出现此错误,但情况并非如此。
当我验证本地队列时,它显示CURDEPTH(1),这意味着队列中有一条消息(它已被传递)。但我不知道为什么它不允许我得到消息。在队列管理器错误文件中,它只显示如下内容:"通道AMQ ....连接已结束"。我检查了为此测试配置的通道:
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)',港口也很好,所以我不知道我错过了什么
答案 0 :(得分:1)
您提供的输出表明您正在执行amqsget
而不是amqsbcgc
。
我注意到您的问题提及amqsbcg
而非amqsbcgc
。示例名称末尾的c
表示它是程序的客户端版本。
amqsbcg = Server Binding version
amqsbcgc = Client version
如果执行amqsget
或amqsbcg
并指定同一服务器上不是本地的队列管理器,您将收到2058
。
解决方案是使用amqsgetc
或amqsbcgc
代替amqsget
或amqsbcg