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

标签 java ibm-mq

我在理解 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/

相关文章:

java - SoapUI SLF4J : Failed to load class “org.slf4j.impl.StaticLoggerBinder”

Java 事件队列 : how to update component in JFrame

java - 为什么 Map#put 指定@throws ClassCastException?

.net - IBM MQ .NET 库不读取 app.config

ibm-mq - 远程 MQ 服务器身份验证

javascript - IBM MQ 如何一条一条地读取消息,而不是一次性在队列管理器中提供所有消息?

ibm-mq - 确定远程 MQ 队列管理器访问我们的本地队列

java - 是否有效地弃用了 Java 属性?

java - 为什么 Mockito.verify 未能通过与我放置的测试不同的测试?

security - Websphere MQ主题和SSL