gpt4 book ai didi

java - 使用mq客户端获取Alias Queue的基础对象队列名

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:04:59 25 4
gpt4 key购买 nike

我有 MQ 客户端代码,可以浏览别名队列以获取别名队列的基本对象名称(即别名队列指向的本地队列的名称)。但是,该代码仅在 MQ 客户端连接到与客户端代码在同一主机上运行的 MQ 管理器时有效,但在客户端代码连接到远程主机上的 MQ 管理器时无效。

客户端代码:

MQEnvironment.hostname = "192.168.1.3";
MQEnvironment.port = "1415";
MQEnvironment.channel = "ADMIN.SVRCONN";

MQQueueManager mqQueueManager = new MQQueueManager(null);

int openOptions = CMQC.MQOO_BROWSE;// + CMQC.MQOO_RESOLVE_LOCAL_Q;

MQQueue mqQueue = mqQueueManager.accessQueue("AN.ALIAS.QUEUE.NAME", openOptions);

String resolvedName = mqQueue.getResolvedQName();

// resolvedName is null when the MQ Manager is on a remote host
System.out.println("Resolved Queue Name: " + resolvedName);

当别名队列的解析队列名称为空时,MQ 管理器的错误日志显示以下单个条目:

AMQ9208: Error on receive from host devlaptop (192.168.1.5).

EXPLANATION:
An error occurred receiving data from devlaptop (192.168.1.5) over TCP/IP.
This may be due to a communications failure.
ACTION:
The return code from the TCP/IP (recv) call was 10054 (X'2746'). Record these
values and tell the systems administrator.

客户端代码是否可以获取远程 MQ 管理器的别名队列的基本对象名称?如果是这样,怎么办?我在某处缺少远程权限吗?还是我的客户端代码 openOptions 错误?

注意:队列管理器中的别名队列或任何其他队列不是集群的。

最佳答案

您在服务器上看到的是客户端在未关闭连接的情况下关闭。 TCP 关闭它并且 QMgr 发出您在 QMgr 日志中看到的错误。如果客户端收到错误,您会看到它返回给客户端。

问题没有指定您尝试打开的别名是否是集群的。如果它是集群的,那么我们希望根据文档解析的名称为空。在这种情况下,OPEN 解析为一个传输队列,但应用程序并不知道是哪个队列。在应用程序看到的返回句柄中,已解析的队列和 QMgr 名称留空。

这在关于 Name Resolution 的部分中有所介绍在知识中心。请引用第 1 列中带有空白队列管理器和第 2 列中带有 CLUSTER 属性的别名队列的表行。

关于java - 使用mq客户端获取Alias Queue的基础对象队列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41681694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com