一、pom文件配置
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-spring</artifactId>
<version>4.3</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jms</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-core</artifactId>
<version>5.7.0</version>
</dependency>
二、配置spring-activemq.xml
<?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:amq="http://activemq.apache.org/schema/core"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://activemq.apache.org/schema/core
http://activemq.apache.org/schema/core/activemq-core.xsd">
<amq:connectionFactory id="amqConnectionFactory"
brokerURL="${mq.broker.url}" userName="${mq.username}" password="${mq.password}"/>
<bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<constructor-arg ref="amqConnectionFactory" />
<property name="sessionCacheSize" value="100" />
</bean>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<constructor-arg ref="connectionFactory" />
<property name="pubSubDomain" value="false" />
</bean>
<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg value="user_book_queue" />
</bean>
<bean id="queueConsumerListener" class="com.zmgj.zmxj.mq.QueueConsumerListener" />
<bean id="queueListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="queueDestination" />
<property name="messageListener" ref="queueConsumerListener" />
</bean>
</beans>
三、配置消息监听
package com.zmgj.zmxj.mq;
import com.zmgj.zmxj.constant.PublicConstant;
import com.zmgj.zmxj.model.MqBean;
import com.zmgj.zmxj.service.IUserBookMarkService;
import com.zmgj.zmxj.service.IUserBookNoteService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
/**
* Created by syk on 2017/9/1.
*/
public class QueueConsumerListener implements MessageListener {
private final static Logger logger = LoggerFactory.getLogger(QueueConsumerListener.class);
private final String QUEUE_PREFIX = "queue://";
@Autowired
private IUserBookMarkService userBookMarkService;
@Autowired
private IUserBookNoteService userBookNoteService;
@Override
public void onMessage(Message message) {
try {
if (null != message) {
ObjectMessage objectMessage = (ObjectMessage) message;
String destination = message.getJMSDestination().toString();
logger.info("目的消息队列【" + destination + "】");
switch (destination) {
case QUEUE_PREFIX + PublicConstant.QUEUE_USER_BOOK:
MqBean mqBean = (MqBean) objectMessage.getObject();
break;
}
logger.info("------Success------");
} else {
logger.info("------No producer at the moment------");
}
} catch (JMSException e) {
logger.error(e.getMessage(), e);
}
}
}
四、生产者
package com.zmgj.zmxj.service.impl;
import com.zmgj.zmxj.service.IProducerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.stereotype.Service;
/**
* Created by syk on 2017/9/1.
*/
@Service
public class ProducerServiceImpl implements IProducerService {
@Autowired
private JmsTemplate jmsTemplate;
@Override
public void sendMessage(String destination, Object msg) {
jmsTemplate.convertAndSend(destination, msg);
}
}