一、引入jiar
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-all</artifactId>
<version>5.11.2</version>
</dependency>
二、spring配置
<!-- Spring用于管理真正的ConnectionFactory的ConnectionFactory -->
<bean id="connectionFactory"
class="org.springframework.jms.connection.SingleConnectionFactory">
<!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->
<property name="targetConnectionFactory" ref="targetConnectionFactory" />
</bean>
<!-- 配置生产者 -->
<!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->
<property name="connectionFactory" ref="connectionFactory" />
</bean>
<!--这个是队列目的地,点对点的 -->
<bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
<constructor-arg index="0" value="Q_BBGX,Q_GGXF" />
<!-- <constructor-arg>
<value>
Q_BBGX
</value>
</constructor-arg>-->
</bean>
<!--这个是主题目的地,一对多的 -->
<bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
<constructor-arg value="topic" />
</bean>
<!-- 接收消息 -->
<!-- 配置监听器 -->
<bean id="myMessageListener" class="com.szzt.tmp.common.listener.MyMessageListener" />
<!-- 消息监听容器 -->
<bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="connectionFactory" />
<property name="destination" ref="queueDestination" />
<property name="messageListener" ref="myMessageListener" />
</bean>
三、生产者、消费者
@Service
public class QueueProducer {
@Autowired
JmsTemplate jmsTemplate;
public void send(String quere, final String message) {
jmsTemplate.send(quere, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
TextMessage textMessage = session.createTextMessage(message);
return textMessage;
}
});
}
}
public class MyMessageListener implements MessageListener {
@Autowired
private IRemoteMonitorService remoteMonitorService;
@Override
public void onMessage(Message message) {
try {
ActiveMQDestination queues = (ActiveMQDestination) message.getJMSDestination();
TextMessage textMessage = (TextMessage) message;
if (queues.getPhysicalName().equalsIgnoreCase("Q_BBGX")) {
// 取消息内容
String terminalNo = textMessage.getText();
//...
} else if (queues.getPhysicalName().equalsIgnoreCase("Q_GGXF")) {
}
} catch (JMSException e) {
e.printStackTrace();
}
}
}