一添加 jar 包
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activemq-all</artifactId>
- <version>5.11.2</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jms</artifactId>
- <version>4.2.4.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>4.2.4.RELEASE</version>
- </dependency>
二发送消息层 :applicationContext-activemq.xml
- <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
- xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
- <!-- 真正可以产生 Connection 的 ConnectionFactory, 由对应的 JMS 服务厂商提供 -->
- <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
- <property name="brokerURL" value="tcp://192.168.25.129:61616" />
- </bean>
- <!-- 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>
- <value>
- spring-queue
- </value>
- </constructor-arg>
- </bean>
- <!-- 这个是主题目的地, 一对多的 -->
- <bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
- <constructor-arg value="topic" />
- </bean>
- </beans>
三发送消息
- /**
- * 点到点形式发送消息
- * @throws Exception
- */
- @Test
- public void sendMessage() throws Exception{
- // 初始化 spring 容器
- ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-activemq.xml");
- // 从容器中获得 JMsTemplate 对象
- JmsTemplate jmsTemplate = applicationContext.getBean(JmsTemplate.class);
- // 从容器中获得一个 Destination 对象
- Destination destination = (Destination) applicationContext.getBean("queueDestination");
- // 发送消息
- jmsTemplate.send(destination, new MessageCreator() {
- @Override
- public Message createMessage(Session session) throws JMSException {
- return session.createTextMessage("send avtivemq message");
- }
- });
- }
四接收消息
1 新建一个类 MyMessageLister , 用来监听接收消息
- package com.fw.search.message;
- import javax.jms.JMSException;
- import javax.jms.Message;
- import javax.jms.MessageListener;
- import javax.jms.TextMessage;
- public class MyMessageLister implements MessageListener{
- @Override
- public void onMessage(Message message) {
- // 取消息内容
- TextMessage textMessage = (TextMessage) message;
- try {
- String text = textMessage.getText();
- System.out.println(text);
- } catch (JMSException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
2 接收消息层: applicationContext-activemq.xml
- <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
- xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
- <!-- 真正可以产生 Connection 的 ConnectionFactory, 由对应的 JMS 服务厂商提供 -->
- <bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
- <property name="brokerURL" value="tcp://192.168.25.129:61616" />
- </bean>
- <!-- Spring 用于管理真正的 ConnectionFactory 的 ConnectionFactory -->
- <bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory">
- <!-- 目标 ConnectionFactory 对应真实的可以产生 JMS Connection 的 ConnectionFactory
- -->
- <property name="targetConnectionFactory" ref="targetConnectionFactory"
- />
- </bean>
- <!-- 这个是队列目的地, 点对点的 -->
- <bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue">
- <constructor-arg>
- <value>
- spring-queue
- </value>
- </constructor-arg>
- </bean>
- <!-- 这个是主题目的地, 一对多的 -->
- <bean id="topicDestination" class="org.apache.activemq.command.ActiveMQTopic">
- <constructor-arg value="topic" />
- </bean>
- <!-- 接收消息 -->
- <!-- 配置监听器 -->
- <bean id="myMessageListener" class="com.fw.search.message.MyMessageLister"
- />
- <!-- 消息监听容器 -->
- <bean class="org.springframework.jms.listener.DefaultMessageListenerContainer">
- <property name="connectionFactory" ref="connectionFactory" />
- <property name="destination" ref="queueDestination" />
- <!-- 这里可以配置点对点或者广播 -->
- <property name="messageListener" ref="myMessageListener" />
- </bean>
- </beans>
3 怎么接收消息
初始化这个 spring ( applicationContext-activemq.xml ) 容器就可以了
- @Test
- public void msgConsumer() throws Exception{
- // 初始化 spring 容器
- ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-activemq.xml");
- // 等待
- System.in.read();
- }
来源: http://www.bubuko.com/infodetail-2543191.html