一、相关jar包
activemq-pool、activemq-broker、activemq-client、xbean-spring(embbed的broker使用)
二、spring-activemq-provider.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:context="http://www.springframework.org/schema/context" 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 "> <!-- activemq连接工厂 --> <bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL"> <value>tcp://localhost:61616</value> </property> <property name="userName"> <value>admin</value> </property> <property name="password"> <value>password</value> </property> </bean> <!-- 连接池 --> <bean id="pooledJmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"> <property name="connectionFactory"> <ref local="jmsFactory" /> </property> </bean> <!-- 消费发送和接收模板 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <ref local="pooledJmsFactory" /> </property> </bean> <!-- destination:queue和topic --> <bean id="queueDest" class="org.apache.activemq.command.ActiveMQQueue" autowire="constructor"> <constructor-arg value="queue-test" /> </bean> <bean id="topicDest" class="org.apache.activemq.command.ActiveMQTopic" autowire="constructor"> <constructor-arg value="topic-test" /> </bean> <!-- 业务实现类 --> <bean id="springProvider" class="com.activemq.demo.SpringProvider"> <property name="template"> <ref local="jmsTemplate" /> </property> <property name="destinations"> <list> <ref local="queueDest" /> <ref local="topicDest" /> </list> </property> </bean> </beans>
三、spring-activemq-consumer.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:context="http://www.springframework.org/schema/context" 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 "> <!-- activemq连接工厂 --> <bean id="jmsFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL"> <value>tcp://localhost:61616</value> </property> <property name="userName"> <value>admin</value> </property> <property name="password"> <value>password</value> </property> </bean> <!-- 连接池 --> <bean id="pooledJmsFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"> <property name="connectionFactory"> <ref local="jmsFactory" /> </property> </bean> <!-- 消费发送和接收模板 --> <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory"> <ref local="pooledJmsFactory" /> </property> </bean> <!-- destination:queue和topic --> <bean id="queueDest" class="org.apache.activemq.command.ActiveMQQueue" autowire="constructor"> <constructor-arg value="queue-test" /> </bean> <!-- 业务实现的监听器 --> <bean id="msgListener" class="com.activemq.demo.SpringMessageListener" /> <!-- 消费者整合监听器 --> <bean id="javaConsumer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="jmsFactory" /> <property name="destination" ref="queueDest" /> <property name="messageListener" ref="msgListener" /> </bean> </beans>
四、相关业务实现类
public class SpringProvider { private JmsTemplate template; private List<Destination> destinations; public void sendQueue(String msg) { template.convertAndSend(destinations.get(0), msg); } public void sendTopic(String msg) { template.convertAndSend(destinations.get(1), msg); } public JmsTemplate getTemplate() { return template; } public void setTemplate(JmsTemplate template) { this.template = template; } public List<Destination> getDestinations() { return destinations; } public void setDestinations(List<Destination> destinations) { this.destinations = destinations; } }
public class SpringMessageListener implements MessageListener { @Override public void onMessage(Message msg) { System.err.println("已经消费数据:" + msg); } }
五、测试
public static void main(String[] args) { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-activemq-provider.xml"); SpringProvider springProvider = context.getBean(SpringProvider.class); springProvider.sendQueue("这就是测试"); }
public static void main(String[] args) { new ClassPathXmlApplicationContext("spring-activemq-consumer.xml"); }
参考地址:
http://activemq.apache.org/spring-support.html
http://docs.spring.io/spring/docs/2.5.x/reference/jms.html#jms-mdp
时间: 2024-10-11 01:40:46