ActiveMQ之spring集成Topic
来源:互联网 发布:正版linux 7.2 编辑:程序博客网 时间:2024/05/16 08:06
通过Spring对ActiveMQ进行配置开发,发布订阅模式,支持消息的持久化。可以通过配置clientId实现持久化订阅。
spring配置,实现了持久化订阅
1.生产者
spring配置:
<?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:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:jms="http://www.springframework.org/schema/jms"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"xmlns:lang="http://www.springframework.org/schema/lang"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsdhttp://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsdhttp://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.0.xsd"> <!-- 配置JMS连接工厂 --> <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <!-- Session缓存数量 --> <property name="sessionCacheSize" value="10" /> <property name="targetConnectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <!-- MQ地址 --> <property name="brokerURL" value="tcp://192.168.18.43:61616" /> <!-- 是否异步发送 --> <property name="useAsyncSend" value="false" /> </bean> </property> </bean> <!-- 发送消息的目的地(一个主题) --> <bean id="testDestination" class="org.apache.activemq.command.ActiveMQTopic"> <!-- 设置消息主题的名字 --> <constructor-arg index="0" value="spring.Topic" /> </bean> <!-- jmsTemplate,用于向任意地址发送消息 --><bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"><property name="connectionFactory" ref="connectionFactory" /><property name="defaultDestination" ref="testDestination" /><!-- 订阅发布模式 --> <property name="pubSubDomain" value="true" /><!-- receiveTimeout表示接收消息时的超时时间 --><property name="receiveTimeout" value="30000" /></bean></beans>发送消息:
package cn.slimsmart.activemq.demo.spring.topic;import javax.jms.JMSException;import javax.jms.Message;import javax.jms.Session;import javax.jms.TextMessage;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.jms.core.JmsTemplate;import org.springframework.jms.core.MessageCreator;@SuppressWarnings("resource")public class ProducerMain {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("classpath:topic/producer.xml"); JmsTemplate jmsTemplate = context.getBean(JmsTemplate.class); jmsTemplate.send(new MessageCreator() {public Message createMessage(Session session) throws JMSException {TextMessage msg = session.createTextMessage(); // 设置消息属性 msg.setStringProperty("property", "属性"); // 设置消息内容 msg.setText("生产者发送队列消息"); return msg; }});}}2.消费者
spring配置,实现了持久化订阅
<?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:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"xmlns:jee="http://www.springframework.org/schema/jee" xmlns:jms="http://www.springframework.org/schema/jms"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"xmlns:lang="http://www.springframework.org/schema/lang"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsdhttp://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsdhttp://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.0.xsd"> <!-- 配置JMS连接工厂 --> <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory"> <!-- Session缓存数量 --> <property name="sessionCacheSize" value="10" /> <!-- 接收者ID 持久化订阅 --> <property name="clientId" value="client_test" /> <property name="targetConnectionFactory"> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> <!-- MQ地址 --> <property name="brokerURL" value="tcp://192.168.18.43:61616" /> </bean> </property> </bean> <!-- 发送消息的目的地(一个主题) --> <bean id="testDestination" class="org.apache.activemq.command.ActiveMQTopic"> <!-- 设置消息主题的名字 --> <constructor-arg index="0" value="spring.Topic" /> </bean> <!-- 异步接收Queue消息Container --> <bean id="queueContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory" /> <property name="destination" ref="testDestination" /> <property name="messageListener" ref="notifyMessageListener" /> <!-- 普通发布订阅模式 --> <!-- <property name="pubSubDomain" value="true"/> --> <property name="receiveTimeout" value="30000"/> <!-- 持久化订阅配置 --><property name="subscriptionDurable" value="true"/><property name="clientId" value="client_test" /> <property name="durableSubscriptionName" value="client_test"/> </bean> <bean id="notifyMessageListener" class="cn.slimsmart.activemq.demo.spring.NotifyMessageListener"></bean></beans>消费者启动类;
package cn.slimsmart.activemq.demo.spring.topic;import org.springframework.context.support.ClassPathXmlApplicationContext;public class ConsumerMain {@SuppressWarnings("resource")public static void main(String[] args) { new ClassPathXmlApplicationContext("classpath:topic/consumer.xml");}}
0 0
- ActiveMQ之spring集成Topic
- ActiveMQ之spring集成Queue
- ActiveMQ 之 Topic Persistence
- activeMQ之topic
- 消息中间件-activemq实战整合Spring之Topic模式(五)
- Spring JMS ActiveMQ Topic Example
- ActiveMQ之spring集成消息转换器MessageConverter
- ActiveMQ(二) ActiveMQ + spring 集成
- Spring 集成 HornetQ Topic 施用
- 《Pro Spring》学习笔记之Spring+ActiveMQ实现Topic通信(发布者/订阅者)
- 95. Spring Boot之ActiveMQ的topic和queue【从零开始学Spring Boot】
- Spring集成ActiveMQ配置
- Spring集成ActiveMQ配置
- spring activemq集成封装
- ActiveMQ和spring集成
- Spring 和activemq集成
- Spring集成ActiveMQ
- Spring集成ActiveMQ
- 一个非常完善的基于Socket的多服务器通信框架
- kafka介绍
- 第十章 会话管理——《跟我学Shiro》
- JAVA -- 线程synchronized关键字
- Object sharing for Runnable vs. extends Thread
- ActiveMQ之spring集成Topic
- Android自定义控件View的探讨
- 无BOM禁止转生产订单
- Ubuntu10.04无法进入系统
- 第十一章 缓存机制——《跟我学Shiro》
- 第十二章 与Spring集成——《跟我学Shiro》
- IOS开发中(null)与<null>的处理
- SQL语言的组成部分 ddl dcl dml
- linux ln -s 软链接 笔记