ActiveMQ整合spring
来源:互联网 发布:mac系统顿号怎么打 编辑:程序博客网 时间:2024/06/01 20:39
1、 activemq在spring中的配置 (生产者)
说明:这里我使用的是topic方式 应用场景(添加了新的商品,可能需要同步索引库,缓存或者生成静态页面)应该有多个消费者消费同一个消息
<!-- 配置第三方jms connectionFactory 这里使用的是activemq--><bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"><constructor-arg name="brokerURL" value="tcp://10.117.17.106:61616"/></bean><!-- 配置spring管理的jms connectionFactory--><bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"><property name="targetConnectionFactory" ref="targetConnectionFactory"/></bean><!-- 配置jmsTemplate --><bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"><property name="connectionFactory" ref="connectionFactory"/></bean><!-- 配置topic --><bean id="itemAddTopic" class="org.apache.activemq.command.ActiveMQTopic"><constructor-arg name="name" value="item-add-topic"/></bean>
2、 把jmsTemplate和需要的topic对象注入到类中成为类(我用的是controller,在添加商品提交事务过后进行发布消息)的属性
下面是java代码片段:
@Autowiredprivate JmsTemplate jmsTemplate;@Resource(name="itemAddTopic")private Destination destination;/** * 增加新的商品 * @param item 商品的详细信息 * @param desc 商品的介绍 * @return */@RequestMapping("/item/save")@ResponseBodypublic TaotaoResult addItem(TbItem item,String desc){long itemId = ItemService.addItem(item,desc);//发送到消息队列中jmsTemplate.send(destination,new MessageCreator() {@Overridepublic Message createMessage(Session session) throws JMSException {//发送itemIdTextMessage textMessage = session.createTextMessage(String.valueOf(itemId));return textMessage;}});return TaotaoResult.ok();}
3、 activemq在spring中的配置 (消费者)
说明:这里订阅了生产者对应的商品添加话题 通过配置同样的destination
<!-- 配置第三方jms connectionFactory 这里使用的是activemq--><bean id="targetConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"><constructor-arg name="brokerURL" value="tcp://10.117.17.106:61616"/></bean><!-- 配置spring管理的jms connectionFactory--><bean id="connectionFactory" class="org.springframework.jms.connection.SingleConnectionFactory"><property name="targetConnectionFactory" ref="targetConnectionFactory"/></bean><!-- 配置queue --><bean id="test-queue" class="org.apache.activemq.command.ActiveMQQueue"><constructor-arg name="name" value="test-queue"/></bean><!-- 配置topic --><bean id="itemAddTopic" class="org.apache.activemq.command.ActiveMQTopic"><constructor-arg name="name" value="item-add-topic"/></bean><!-- 配置消息监听器 --><bean id="myMessageListener" class="com.taotao.search.listener.MyMessageListener"/><!-- 配置消息监听容器 --><bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"><property name="connectionFactory" ref="connectionFactory"/><property name="destination" ref="test-queue"/><property name="messageListener" ref="myMessageListener"></property></bean><!-- 配置添加商品消息监听器 --><bean id="itemAddMessageListener" class="com.taotao.search.listener.ItemAddMessageListener"/><!-- 配置消息监听容器 --><bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"><property name="connectionFactory" ref="connectionFactory"/><property name="destination" ref="itemAddTopic"/><property name="messageListener" ref="itemAddMessageListener"></property></bean>
4、 自定义messagelistener实现接口并实现方法
下面是java代码片段:
/** * 这是同步商品添加索引的监听器 * @author xuguoqin * */public class ItemAddMessageListener implements MessageListener{@Autowiredprivate SolrServer SolrServer;@Autowiredprivate SearchItemMapper searchItemMapper;@Overridepublic void onMessage(Message message) {try {//得到消息文本TextMessage textMessage = (TextMessage)message;//得到商品idlong itemId = Long.parseLong(textMessage.getText());//得到searchItem对象SearchItem searchItem = searchItemMapper.getSearchItemById(itemId);//设置需要索引的字段SolrInputDocument document = new SolrInputDocument();document.addField("id", searchItem.getId());document.addField("item_title", searchItem.getTitle());document.addField("item_sell_point", searchItem.getSell_point());document.addField("item_price", searchItem.getPrice());document.addField("item_image", searchItem.getImage());document.addField("item_category_name", searchItem.getCategory_name());document.addField("item_desc", searchItem.getItem_desc());//添加到文档索引中SolrServer.add(document);//提交SolrServer.commit();} catch (Exception e) {e.printStackTrace();}}}
阅读全文
0 0
- ActiveMQ(四):Spring ActiveMQ 整合
- ActiveMQ和spring整合
- Spring整合ActiveMQ
- SPRING+ACTIVEMQ+TOMCAT整合
- Spring整合activeMQ
- ActiveMQ、Spring整合学习
- activeMq整合spring
- ActiveMQ、Spring整合学习
- spring activemq quartz 整合
- SPRING JMS 整合ACTIVEMQ
- ActiveMQ整合Spring
- 【参考】spring整合activemq
- Spring整合ActiveMQ
- spring+activemq整合学习
- spring 整合 activemq 配置文件
- Spring整合ActiveMQ
- Spring与ActiveMQ整合
- ActiveMQ和spring整合
- C++一本通题库1019
- 声明
- Lucene入门教程
- JDBC(一)
- 后缀表达式求值
- ActiveMQ整合spring
- 搜索图中任意两点间的所有路径
- 用类描述计算机中CPU的速度和硬盘容量
- C++&Pascal&Python——【USACO 3.4.2】——Electric Fence
- C++信息学一本通题库1020
- 多线程系列——Mutex的两个基本操作lock和unlock的实现
- linux上安装nginx
- Python学习:输入输出重定向
- Shader_初识