[英]No response when using IBM MQ client jars in application to connect to IBM MQ server
[英]Connect to IBM MQ using JmsListener
我有一個 Spring 應用程序,我想使用JmsListener
連接到 IBM MQ。 這是我的配置:
package com.in28minutes.example.layering.model;
import com.ibm.mq.jms.JMSC;
import com.ibm.mq.jms.MQQueueConnectionFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
import org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter;
import javax.jms.ConnectionFactory;
@Configuration
@EnableJms
public class Qm1Config {
@Bean
public MQQueueConnectionFactory qm1ConnectionFactory() {
MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
try {
cf.setHostName("localhost");
cf.setPort(1414);
cf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
cf.setQueueManager("QM1");
cf.setChannel("DEV.ADMIN.SVRCONN");
} catch (Exception e) {
e.printStackTrace();
}
return cf;
}
@Bean
UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter(@Qualifier("qm1ConnectionFactory") ConnectionFactory connectionFactory) {
UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter = new UserCredentialsConnectionFactoryAdapter();
userCredentialsConnectionFactoryAdapter.setUsername("admin");
userCredentialsConnectionFactoryAdapter.setPassword("passw0rd");
userCredentialsConnectionFactoryAdapter.setTargetConnectionFactory(connectionFactory);
return userCredentialsConnectionFactoryAdapter;
}
@Bean
public JmsListenerContainerFactory<?> qm1JmsListenerContainerFactory(@Qualifier("userCredentialsConnectionFactoryAdapter") UserCredentialsConnectionFactoryAdapter userCredentialsConnectionFactoryAdapter) {
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
factory.setConnectionFactory(userCredentialsConnectionFactoryAdapter);
return factory;
}
}
這是我的消費者:
package com.in28minutes.example.layering.model;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class QueueConsumer {
@JmsListener(destination = "DEV.QUEUE.1", containerFactory = "qm1JmsListenerContainerFactory")
public void receive1(String text) {
System.out.println("Received from qm1: " + text);
}
}
我已將應用程序部署到 TomEE plus 容器中,並向隊列發送了幾條消息:
我還在 servlet-context.xml 中添加了以下條目
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:beans=""
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config />
<context:component-scan base-package="com.in28minutes.example.layering.model" />
</beans>
但是,應用程序並沒有使用這些消息。 我該如何解決?
更新#1我用@EnableJMS 注釋了消費者類
@Component
@EnableJms
public class QueueConsumer {
@JmsListener(destination = "DEV.QUEUE.1", containerFactory = "qm1JmsListenerContainerFactory")
public void receive1(String text) {
System.out.println("Received from qm1: " + text);
}
}
我仍然沒有收到消息
您可以嘗試在 QueueConsumer 類上添加@EnableJms
嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.