在上一篇文章里 我说到了 maven的配置  我现在直接说 xml配置

首先我先描述 生产者的信息

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:amq="http://activemq.apache.org/schema/core"
  5. xmlns:jms="http://www.springframework.org/schema/jms"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xmlns:mvc="http://www.springframework.org/schema/mvc"
  8. xsi:schemaLocation="
  9. http://www.springframework.org/schema/beans
  10. http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
  11. http://www.springframework.org/schema/context
  12. http://www.springframework.org/schema/context/spring-context-4.1.xsd
  13. http://www.springframework.org/schema/mvc
  14. http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd
  15. http://www.springframework.org/schema/jms
  16. http://www.springframework.org/schema/jms/spring-jms-4.1.xsd
  17. http://activemq.apache.org/schema/core
  18. http://activemq.apache.org/schema/core/activemq-core-5.12.1.xsd"
  19. >
  20.  
  21. <!-- <context:component-scan base-package="com.gzframe.demo.activemq" />
  22. <mvc:annotation-driven /> -->
  23.  
  24. <amq:connectionFactory id="amqConnectionFactory"
  25. brokerURL="tcp://60.205.212.39:61616"
  26. userName="admin"
  27. password="admin" />
  28.  
  29. <!-- 配置JMS连接工长 -->
  30. <bean id="connectionFactoryMq"
  31. class="org.springframework.jms.connection.CachingConnectionFactory">
  32. <constructor-arg ref="amqConnectionFactory" />
  33. <property name="sessionCacheSize" value="100" />
  34. </bean>
  35.  
  36. <!-- 定义主题 -->
  37. <!-- 定义消息主题(topic) 在这里要注意一下 -->
  38. <bean id="demoTopicDestination" class="org.apache.activemq.command.ActiveMQTopic">
  39. <!-- 设置消息队列的名字 -->
  40. <constructor-arg>
  41. <value>topic.demo2</value>
  42. </constructor-arg>
  43. </bean>
  44. <!-- 配置JMS模板(topic),Spring提供的JMS工具类,它发送、接收消息。org.apache.activemq.command.ActiveMQQueue 如果你用的是这个 系统不会报错 但是 你生产的 会在队列里生产出来 也会在 主题里 -->
  45. <bean id="jmsTemplateTopic" class="org.springframework.jms.core.JmsTemplate">
  46. <property name="connectionFactory" ref="connectionFactoryMq" />
  47. <property name="defaultDestination" ref="demoTopicDestination" />
  48. <property name="receiveTimeout" value="10000" />
  49. <!-- true是topic,false是queue,默认是false,此处显示写出false -->
  50. <property name="pubSubDomain" value="true" />
  51. </bean>
  52.  
  53. </beans>

配置好了以后  下面是我的controller层   这个我直接就写方法了  因为在上一篇文章里  我写的controller 都在一起

  1. @Autowired
  2. private ActiveMqTopicsService activeMqTopicsService;
  1. /**
  2. *
  3. * @Title: TestTopic @Description: 一个标题 发布 生产者 @param 设定文件 @return void
  4. * 返回类型 @throws
  5. */
  6. @RequestMapping("TestTestTopic")
  7. public void TestTopic() {
  8. activeMqTopicsService.TestTopic();
  9. }
  1. @Service
  2. public class ActiveMqTopicsServiceImpl implements ActiveMqTopicsService{
  3.  
  4. @Resource(name="jmsTemplateTopic")
  5. private JmsTemplate jmsTemplate;
  6.  
  7. //队列名gzframe.demo
  8. @Resource(name="demoTopicDestination")
  9. private Destination destination;
  10. /**
  11. *
  12. * @Title: TestTopic
  13. * @Description: 一个标题 发布 生产者
  14. * @param 设定文件
  15. * @return void 返回类型
  16. * @throws
  17. */
  18. public void TestTopic() {
  19. jmsTemplate.send(new MessageCreator() {
  20. public Message createMessage(Session session) throws JMSException {
  21. TextMessage msg = session.createTextMessage();
  22. // 设置消息属性
  23. msg.setStringProperty("phrCode", "C001");
  24. // 设置消息内容
  25. msg.setText("Hello World! bug1");
  26. return msg;
  27. }
  28. });
  29. }
  30. }

运行结果

在这里  我先说一下 我的个人习惯  我想把这个东西都已经放进去了 我就想用请求  取出来  可是 找了 很久发现 取不出来 应该是订阅的关系  所以显示订阅   你订阅了以后  你放进去东西 才会给你返回  自己单独取应该是取不出来的   主题就是订阅模式吧

我先配置一下我的xml  首先你要订阅它  然后配置监听

在这里 要注意下  需要重新配置一下工厂   这个订阅与生产者是同一个xml  在订阅里已经设置了 订阅主题的名字

  1. <!-- 配置JMS连接工厂 -->
  2. <bean id="consumerConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
  3. <property name="brokerURL" value="failover:(tcp://**.**.***.***:61616)" />
  4. <property name="useAsyncSend" value="true" />
  5. <property name="clientID" value="consumerClienctConnect" />
  6. </bean>

然后消费者订阅

  1. <!-- 消息订阅客户端1 -->
  2. <bean id="consumerListenerClient1" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
  3. <property name="connectionFactory" ref="consumerConnectionFactory" />
  4. <!-- 开启订阅模式 -->
  5. <property name="pubSubDomain" value="true"/>
  6. <property name="destination" ref="demoTopicDestination" />
  7. <property name="subscriptionDurable" value="true"/>
  8. <!---这里是设置接收客户端的ID,在持久化时,但这个客户端不在线时,消息就存在数据库里,直到被这个ID的客户端消费掉-->
  9. <property name="clientId" value="consumerClient1"/>
  10. <property name="messageListener" ref="activeMqTopicsServiceImpl" />
  11. <!-- 消息应答方式
  12. Session.AUTO_ACKNOWLEDGE 消息自动签收
  13. Session.CLIENT_ACKNOWLEDGE 客户端调用acknowledge方法手动签收
  14. Session.DUPS_OK_ACKNOWLEDGE 不必必须签收,消息可能会重复发送
  15. -->
  16. <property name="sessionAcknowledgeMode" value="1"/>
  17. </bean>
  18. <!-- 消息订阅客户端2 -->
  19. <bean id="consumerListenerClient2" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
  20. <property name="connectionFactory" ref="consumerConnectionFactory" />
  21. <!-- 开启订阅模式 -->
  22. <property name="pubSubDomain" value="true"/>
  23. <property name="destination" ref="demoTopicDestination" />
  24. <property name="subscriptionDurable" value="true"/>
  25. <!---这里是设置接收客户端的ID,在持久化时,但这个客户端不在线时,消息就存在数据库里,直到被这个ID的客户端消费掉-->
  26. <property name="clientId" value="consumerClient2"/>
  27. <property name="messageListener" ref="activeMqTopicsServiceImpl" />
  28. <!-- 消息应答方式
  29. Session.AUTO_ACKNOWLEDGE 消息自动签收
  30. Session.CLIENT_ACKNOWLEDGE 客户端调用acknowledge方法手动签收
  31. Session.DUPS_OK_ACKNOWLEDGE 不必必须签收,消息可能会重复发送
  32. -->
  33. <property name="sessionAcknowledgeMode" value="1"/>
  34. </bean>

在配置文件完成了以后  在java里要实现这个接口MessageListener

  1. @Service
  2. public class ActiveMqTopicsServiceImpl implements ActiveMqTopicsService,MessageListener {
  3.  
  4. @Resource(name="jmsTemplateTopic")
  5. private JmsTemplate jmsTemplate;
  6.  
  7. //队列名gzframe.demo
  8. @Resource(name="demoTopicDestination")
  9. private Destination destination;
  10.  
  11. @Override
  12. public void onMessage(Message arg0) {
  13. TextMessage tm = (TextMessage)arg0;
  14. try {
  15. System.out.println("从订阅主题--" + destination.toString() + "收到了消息:\t"
  16. + tm.getText());
  17. tm.acknowledge();
  18. String str = tm.getText();
  19. } catch (JMSException e) {
  20. e.printStackTrace();
  21. }
  22.  
  23. }
  24. }

这个实现与接口我都放在了一起  看见的要注意下呀

实现结果

因为我我配置了 两个 消费者  所以会监听两次 出现两个输出

到这里就结束了  就是很简单的例子 这篇文章与上一篇文章  我也是 在网上找的例子 自己整合了一下 做的实现  我也是个初学者  希望给大家一点点小帮助  哈哈哈

叙述 activemq 与spring 主题实现 小功能实现的更多相关文章

  1. ActiveMQ集成Spring使用

    现在任何一个框架的使用都会结合spring框架,quartz.cxf与平时常见的Hibernate.mybatis.Struts等都可以与spring集成起来使用,在这里研究了activemq结合sp ...

  2. Struts+Hibernate+Spring实现用户登录功能

    通过登录案例实现三大框架之间的整合,登录功能是任何系统和软件必不可少的一个模块,然而通过这个模块来认识这些复杂的框架技术,理解数据流向和整个设计思路是相当容易的.只有在掌握了这些小模块的应用后,才能轻 ...

  3. spring 主题使用详解[转]

    在common_include_v2.jsp文件中,spring主题的使用: <link href="${staticPath }/<spring:theme code='sty ...

  4. ActiveMQ与spring整合

    第一步:引用相关的jar包 <dependency> <groupId>org.springframework</groupId> <artifactId&g ...

  5. activeMQ和spring的整合

    http://www.cnblogs.com/shuai-server/p/8966299.html  这篇博客中介绍了activemq传递消息的两种方式,今天分享的是activemq框架和sprin ...

  6. ActiveMQ整合spring、同步索引库

    1.   Activemq整合spring 1.1. 使用方法 第一步:引用相关的jar包. <dependency> <groupId>org.springframework ...

  7. iOS常用小功能

    CHENYILONG Blog 常用小功能 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong  ...

  8. iOS 网易彩票-6设置模块三(常用小功能)

    该篇文章中,用到很多iOS开发过程中常用的小功能,当前只是将这些功能集成到网易彩票的设置中.iOS-常用小功能介绍,请参考我的另一篇文章: iOS 常用小功能 总结:http://www.cnblog ...

  9. iOS 常用小功能 总结

    常用小功能 iOS中的很多小功能都是非常简单的,几行代码就搞定了,比如打电话.打开网址.发邮件.发短信等 打电话 方法一(不被采用): 拨号之前会弹框询问用户是否拨号,拨完后能自动回到原应用 NSUR ...

随机推荐

  1. 【3D美术教程】手雷(传统与PBR流程)

    转自:https://www.sohu.com/a/156489635_718614 随着最新的次时代技术PBR流程的普及,越来越多的公司由传统流程转向了PBR流程,主要原因在于PBR材质不仅效果上更 ...

  2. day28元类与异常查找

    元类与异常处理1. 什么是异常处理    异常是错误发生的信号,一旦程序出错就会产生一个异常,如果该异常    没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止    异常包含三个部分: ...

  3. python-web自动化-三种等待方式

    当有元素定位不到时,比如下拉框,弹出框等各种定位不到时:一般是两种问题:1 .有frame :2.没有加等待 下面学习三种等待方式: 1.强制等待 sleep(xx)这种方法简单粗暴,不管浏览器是否加 ...

  4. win7 64 位 + vs2015 + opencv3.2

    下载OpenCv_3.2_vc14 链接:http://pan.baidu.com/s/1eSBu1NG 密码:104g 1.下载好后,进行解压到自己指定的目录: 解压后可以得到: 2.添加环境变量 ...

  5. JDK1.7 的 HashMap

    HashMap是一个用于存储key-value的键值对集合,每个键值对都是一个Entry.这些键值对分散存储在一个数组中,这个数组就是HashMap的主干. HashMap每个初始值都为null. 1 ...

  6. 《Effective Java 第三版》新条目介绍

    版权声明:本文为博主原创文章,可以随意转载,不过请加上原文链接. https://blog.csdn.net/u014717036/article/details/80588806前言 从去年的3月份 ...

  7. ODPS SQL <for 数据定义语言 DDL>

    数据定义语言:(DDL) 建表语句: CREATE TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment ...

  8. 使用idea生成maven项目的jar包(转)

    第一步  第二步  第三步 转自:https://blog.csdn.net/waterimelon/article/details/69243651

  9. service mysqld start,Failed to start mysqld.service: Access denied

    service mysqld start 然后报: ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===Authentic ...

  10. HTML 5 视频/音频

    HTML5 Audio/Video 方法 方法 描述 addTextTrack() 向音频/视频添加新的文本轨道 canPlayType() 检测浏览器是否能播放指定的音频/视频类型 load() 重 ...