gpt4 book ai didi

java - IBM MQ : Is a channel for sending only necessary?

转载 作者:行者123 更新时间:2023-11-30 02:28:53 26 4
gpt4 key购买 nike

我在理解 IBM MQ 方面遇到困难。

我想编写一个仅向队列发送消息的客户端。据我了解,在我看来,我不需要为该场景使用 channel 。我的来源是这本书:http://www.redbooks.ibm.com/abstracts/redp0021.html

但是当我尝试连接到队列时,我收到错误代码

2540 (09EC) (RC2540): MQRC_UNKNOWN_CHANNEL_NAME

这是我的示例代码,它将捕获带有上述错误代码的异常:

 @Test   
public void init() throws InitializationException {
MqConfigurationData mqConfigurationData = confManager.getUserConfig().getMqConfigurationData();
MQEnvironment.hostname = mqConfigurationData.getHostname();
MQEnvironment.port = new Integer(mqConfigurationData.getPort());

try {
MQQueueManager mqQueueManager = new MQQueueManager(mqConfigurationData.getQueueManager());
} catch (MQException e) {
throw new InitializationException(ApiExceptionId.INIT_MQ_CONFIGURATION, e.getMessage());
}

}

所以我的问题是:即使在仅限客户端的情况下我也需要 channel 吗?

最佳答案

如果您的应用程序与您希望连接到的队列管理器在同一服务器上执行,那么您不需要需要连接到 channel ,在这种情况下,应用程序将使用以下方式在绑定(bind)模式下进行连接工控机。

如果您想通过网络连接到队列管理器(在不同的服务器甚至同一服务器上),那么您确实需要一个连接 channel ,在这种情况下应用程序将连接使用 TCP/IP 的客户端模式。

有关两种连接模式的更多详细信息,请参阅知识中心页面“Using IBM MQ classes for Java”。

<小时/>

在您的示例中,您通过指定 MQEnvironment.hostnameMQEnvironment.port 来表明您希望使用客户端连接模式。如果队列管理器上不存在 SVRCONN channel ,则会出现 MQRC_UNKNOWN_CHANNEL_NAME 错误。由于您没有指定 MQEnvironment.channel,IBM MQ 类 for Java 应用程序可能会尝试使用不存在的 NULL channel 名称进行连接。

<小时/>

请注意,根据 v9.0 知识中心页面“Using IBM MQ classes for Java”,IBM MQ Classes for Java 的功能已稳定在 IBM MQ 版本 8.0 中提供的级别。

IBM will make no further enhancements to the IBM MQ classes for Java and they are functionally stabilized at the level shipped in IBM MQ Version 8.0.

建议对新开发的应用程序使用 IBM MQ Classes for JMS。

关于java - IBM MQ : Is a channel for sending only necessary?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44758237/

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