/ / Spring Integration: MQSeries Message Driven Adapter funktioniert nicht - Spring, Spring-Integration, Message-Queue, ibm-mq, Spring-jms

Spring Integration: MQSeries-nachrichtengesteuerter Adapter funktioniert nicht - Feder, Federintegration, Nachrichtenwarteschlange, ibm-mq, spring-jms

Ich bin in der Lage, ActiveMQ (im gebundenen nachrichtengesteuerten Kanal) und Kafka (als abgehenden Kanal) erfolgreich zu integrieren. Es funktioniert gut.

Da sowohl die ActiveMQ- als auch die MQ-Serie JMS-kompatibel sind, dachte ich, der Übergang wäre einfacher. Aber es ist unter dem Fehler:

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"

Meine Frühlingsintegrationskonfiguration sieht wie folgt aus:

<?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>

Und mein entsprechender Code sieht wie folgt aus:

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);
}

Warum erhalte ich diesen Fehler? Ich habe einige Beiträge gesehen, die auf den pubLocal-Wert zurückzuführen sind, der in jmsTemplate w.r.t MQQueue nicht verfügbar ist. Das Datum wurde jedoch auf 2005 datiert und ich habe festgestellt, dass die Änderung veröffentlicht wurde.

Antworten:

1 für die Antwort № 1

Verwenden Sie einfach container.setDestinationName(HELLO_QUEUE) Stattdessen und lassen Sie den Container richtig auflösen Session.