【问题标题】:Spring Integration : MQSeries Message Driven Adapter Not WorkingSpring 集成:MQSeries 消息驱动适配器不工作
【发布时间】:2017-12-23 17:29:51
【问题描述】:

我能够成功集成 ActiveMQ(绑定消息驱动通道)和 Kafka(作为出站通道)。它工作正常。

现在,由于 ActiveMQ 和 MQ 系列都符合 JMS,我认为过渡会更容易。但是,它抛出以下错误:

Setup of JMS Message listener invoker failed for destination 'queue://abcd' - trying to recover - Cause: JMSQ1112: The operation for a domain specific object was not valid. The operation 'createConsumer' is not valid for type 'com.ibm.mq.jms.MQQueue'

我的 spring 集成配置如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:jms="http://www.springframework.org/schema/integration/jms"
    xmlns:integration="http://www.springframework.org/schema/integration"
    xmlns:int-kafka="http://www.springframework.org/schema/integration/kafka"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/integration/jms 
    http://www.springframework.org/schema/integration/jms/spring-integration-jms.xsd
    http://www.springframework.org/schema/integration/kafka 
    http://www.springframework.org/schema/integration/kafka/spring-integration-kafka.xsd">

    <jms:message-driven-channel-adapter id="requestChannelAdapter" channel="requestChannel" 
    container="requestListenerContainer" error-channel=""/>


    <int-kafka:outbound-channel-adapter
        id="kafkaOutboundChannelAdapter" kafka-template="kafkaTemplate"
        auto-startup="true" sync="true" channel="inputToKafka" topic="test">
    </int-kafka:outbound-channel-adapter>
</beans>

我各自的代码如下所示:

public MQQueueConnectionFactory jmsConnectionfactory() {

        MQQueueConnectionFactory jmsFactory = new MQQueueConnectionFactory();
        jmsFactory.setHostName(hostname);
        jmsFactory.setPort(1444);
        jmsFactory.setQueueManager(//valid queue manager);
        jmsFactory.setChannel(//valid channel name);
        jmsFactory.setTransportType(1);
        jmsFactory.setSSLCipherSuite(// valid suite);
        return jmsFactory;
    }

    @Bean
    public DefaultMessageListenerContainer requestListenerContainer() {

        DefaultMessageListenerContainer container = new DefaultMessageListenerContainer();
        container.setConnectionFactory(jmsConnectionfactory());
        container.setSessionTransacted(true);
        container.setDestination(helloJMSQueue());
        return container;
    }


    @Bean
    public Queue helloJMSQueue() {
        return new MQQueue(HELLO_QUEUE);
    }

为什么我会收到此错误?我看到一些帖子,这是由于 jmsTemplate w.r.t MQQueue 中没有 pubLocal 值,但那可以追溯到 2005 年,我注意到更改已经发布。

【问题讨论】:

    标签: spring spring-integration message-queue ibm-mq spring-jms


    【解决方案1】:

    只使用container.setDestinationName(HELLO_QUEUE) 并让容器通过Session 正确解析它。

    【讨论】:

      猜你喜欢
      • 2014-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 2017-09-18
      • 2017-04-29
      • 1970-01-01
      相关资源
      最近更新 更多