JMS-ActiveMQ学习-3 ActiveMQ与Spring集成
Spring下开发消息的发送和接收程序
点对点模式
一、创建生产者项目
1.创建maven项目
2.添加spring-jms、jms规范、activemq依赖
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>javax.jms</groupId> <artifactId>javax.jms-apis</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-client</artifactId> <version>5.15.4</version> </dependency></dependencies>
3.创建applicationContext.xml和applicationContext-jms.xml
applicationContext.xml中的配置内容:
<import resource="applicationContext-jms.xml"/>
applicationContext-jms.xml中的配置内容:
<!--创建一个连接工厂--><bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <!--连接地址--> <property name="brokerURL" value="tcp://localhost:61616"/> <property name="userName" value="admin"/> <property name="password" value="admin"/></bean><!--jms的操作模板--><bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/> <!--配置目的地--> <property name="defaultDestinationName" value="myQueue"/></bean> 4.具体实现接口和类1>创建dao层接口和类
public interface MessageDao { public void sendMessage(String message);}
@Repositorypublic class MessageDaoImpl implements MessageDao { @Autowired private JmsTemplate jmsTemplate; public void sendMessage(final String message) { System.out.println("send message start"); jmsTemplate.send(new MessageCreator() { public Message createMessage(Session session) throws JMSException { return session.createTextMessage(message); } }); }}2>创建service层接口和类
public interface MessageService { public void sendMessage(String message);}
@Servicepublic class MessageServiceImpl implements MessageService { @Autowired private MessageDao messageDao; public void sendMessage(String message) { messageDao.sendMessage(message); }}3>创建Test类
public class Test { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); MessageService messageService = context.getBean("messageServiceImpl",MessageServiceImpl.class); messageService.sendMessage("发送消息了"); }} 4>applicationContext.xml文件中添加
<context:component-scan base-package="com.test.activemq"/> 二、创建消费者项目
1.创建maven项目
2.添加spring-jms、jms规范、activemq依赖
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>javax.jms</groupId> <artifactId>javax.jms-apis</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-client</artifactId> <version>5.15.4</version> </dependency></dependencies>
3.创建applicationContext.xml和applicationContext-jms.xml
applicationContext.xml中的配置内容:
<import resource="applicationContext-jms.xml"/>
applicationContext-jms.xml中的配置内容:
<!--创建一个连接工厂--><bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <!--连接地址--> <property name="brokerURL" value="tcp://localhost:61616"/> <property name="userName" value="admin"/> <property name="password" value="admin"/></bean><!--jms的操作模板--><bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/> <!--配置目的地--> <property name="defaultDestinationName" value="myQueue"/></bean> 4.具体实现接口和类同步方式接收:1>创建dao层接口和类
public interface MessageDao { public String receiveMessage();}
@Repositorypublic class MessageDaoImpl implements MessageDao { @Autowired private JmsTemplate jmsTemplate; public String receiveMessage(){ String msg = ""; Message message = jmsTemplate.receive(); if (message instanceof TextMessage){ try { msg = ((TextMessage) message).getText(); } catch (JMSException e) { e.printStackTrace(); } } return msg; }}
2>创建service层接口和类
public interface MessageService { public String receiveMessage();}
@Servicepublic class MessageServiceImpl implements MessageService { @Autowired private MessageDao messageDao; public String receiveMessage() { return messageDao.receiveMessage(); }}
3>创建Test类
public class Test { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); MessageService messageService = context.getBean("messageServiceImpl",MessageServiceImpl.class); String message = messageService.receiveMessage(); System.out.println("接收到的消息是:"+message); }}
4>applicationContext.xml文件中添加
<context:component-scan base-package="com.test.jms"/>三、消费者点对点模式-异步接收
需要使用监听器1>创建maven项目2>添加依赖
<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>4.3.10.RELEASE</version> </dependency> <dependency> <groupId>javax.jms</groupId> <artifactId>javax.jms-apis</artifactId> <version>2.0.1</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-client</artifactId> <version>5.15.4</version> </dependency></dependencies>3>创建applicationContext.xml和applicationContext-jms.xml
<!--创建一个连接工厂--><bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <!--连接地址--> <property name="brokerURL" value="tcp://localhost:61616"/> <property name="userName" value="admin"/> <property name="password" value="admin"/></bean><!--配置一个spring的jms消息监听器--><bean class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory"/> <property name="DestinationName" value="springQueue"/> <property name="messageListener" ref="myMessageListener"/> </bean><bean id="myMessageListener" class="com.test.jms.listener.MyMessageListener"/>4>创建MyMessageListener类
/** * 实现消息监听器 */public class MyMessageListener implements MessageListener { /** * 当消息监听器监听到消息后,会自动回调该onMessage方法 * 并且把监听到的消息回传给该方法 * @param message */ public void onMessage(Message message) { if (message instanceof TextMessage){ try { System.out.println("接收到的消息是:"+((TextMessage) message).getText()); } catch (JMSException e) { e.printStackTrace(); } } }}5>创建Test测试类
public class Test { public static void main(String[] args) { new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); }}启动发现可以收到消息 console控制台打印出来的消息是: 接收到的消息是:发送消息了
发布订阅模式
同步和异步接收只是针对消费者而言的
发布订阅模式-同步接收
一、创建生产者
生产者和消费者的都配置成发布订阅模式
同步接收使用receive()接收
创建生产者需要在点对点模式的基础上在applicationContext-jms.xml文件中添加:
<!--创建一个连接工厂--><bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <!--连接地址--> <property name="brokerURL" value="tcp://localhost:61616"/> <property name="userName" value="admin"/> <property name="password" value="admin"/></bean><!--jms的操作模板--><bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/> <!--配置目的地--> <property name="defaultDestinationName" value="springTopic"/><!--pubSubDomain这个property对应模式true代表发布订阅,false代表点对点,默认是false,--> <property name="pubSubDomain" value="true"/></bean>同理,消费者也是在点对点模式的基础上做上述配置,后消费者先启动,再启动生产者
发布订阅模式-异步接收
在异步基础上添加发布订阅的配置(生产者和消费者都需要配置)
<!--创建一个连接工厂--><bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <!--连接地址--> <property name="brokerURL" value="tcp://localhost:61616"/> <property name="userName" value="admin"/> <property name="password" value="admin"/></bean><!--jms的操作模板--><bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate"> <property name="connectionFactory" ref="connectionFactory"/> <!--配置目的地--> <property name="defaultDestinationName" value="springTopic"/> <property name="pubSubDomain" value="true"/></bean>
转载于:https://www.cnblogs.com/healthinfo/p/9567362.html
JMS-ActiveMQ学习-3 ActiveMQ与Spring集成相关推荐
- JMS学习(2):ActiveMQ简单介绍以及安装
现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了消息通信的规范JM ...
- ActiveMQ学习总结(3)——spring整合ActiveMQ
2019独角兽企业重金招聘Python工程师标准>>> 1.参考文献 Spring集成ActiveMQ配置 Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇 ...
- Spring集成Activemq使用
现在任何一个框架的使用都会结合spring框架,quartz.cxf与平时常见的Hibernate.mybatis.Struts等都可以与spring集成起来使用,在这里研究了activemq结合sp ...
- ActiveMQ学习总结(10)——ActiveMQ采用Spring注解方式发送和监听
对于ActiveMQ消息的发送,原声的api操作繁琐,而且如果不进行二次封装,打开关闭会话以及各种创建操作也是够够的了.那么,Spring提供了一个很方便的去收发消息的框架,spring jms.整合 ...
- ActiveMQ学习笔记(21)----ActiveMQ集成Tomcat
1. 监控和管理Broker Web Console 方式:直接访问ActiveMQ的管理页面:http://localhost:8161/admin,默认的用户名和密码是admin/admin.具体 ...
- JMS学习十 ActiveMQ支持的传输协议
JMS学习(ActiveMQ支持的传输协议) ActiveMQ提供了一种连接机制,这种连接机制使用传输连接器(TransportConnector)实现客户端与代理(client - to - bro ...
- jms mysql_JMS学习九(ActiveMQ的消息持久化到Mysql数据库)
1.将连接Mysql数据库的jar文件,放到ActiveMQ的lib目录下 2.修改ActiveMQ的conf目录下的active.xml文件,修改数据持久化的方式 2.1 修改原来的kshadb的 ...
- Spring集成JMS入门
1.预备知识 在学习Spring集成JMS之前最好可以是先去了解JMS基本概念和ActiveMQ 自己学习Spring整合JMS的一些心得,希望可以帮到大家 2.Spring整合JMS 2.1.使用点 ...
- linux C++ 环境下的ActiveMQ学习
ActiveMQ 1.概述 ActiveMQ 是Apache出品,最流行的.功能强大的即时通讯和集成模式的开源服务器.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Pr ...
- ActiveMQ 学习(VM Transport)
http://jinguo.iteye.com/blog/233947 1 JMS 在介绍ActiveMQ之前,首先简要介绍一下JMS规范. 1.1 JMS的基本构件 1.1.1 连接工厂 连接工厂是 ...
最新文章
- 张杰和机器人_张杰 - 精密运动与先进机器人技术团队 - robotics.nimte.ac.cn
- web模拟终端博客系统
- 中国如何成为一流国家
- bps计算机,bps指的是计算机的什么
- ‘Series‘ object has no attribute ‘sort‘
- 数据备份基础之备份类型
- electron 使用中的注意事项
- JSP页面最终是编译为Servlet执行的
- 热像仪 二次开发 c++_重庆多功能红外线热像仪方案
- CTL_CODE说明
- php 在线人数 mysql_PHP+MYSQL实例:编写网站在线人数的程序代码
- windows 编程 —— 消息与参数(滚动条、键盘、鼠标)
- python中的sys模块和os_python中os和sys模块的区别与常用方法总结
- 【习题 8-10 UVA - 1614】Hell on the Markets
- 开心网游戏界面Html
- linux cximage动态库,64位Linux编译cximage手记
- visio连接线设置
- 弘辽科技:拼多多批发价格会影响活动价格吗?商家要不要改价?
- 索泰显卡超频软件测试要多少时间,索泰显卡超频软件(FireStorm)
- 项目记录-手机号码限制频次
热门文章
- Objective-C语言的动态性
- cfdiv2/c/找规律
- python 下字符串格式时间比较
- 使用 WebBrowser 操作 js
- 在VS2005中使用添加变量向导十分的
- Tiray.SMSTiray.SMSTiray.SMSTiray.SMSTiray.SMSTiray.SMS
- [BFS]JZOJ 4672 Graph Coloring
- vue13过滤器 debounce延迟、limitBy、filterBy、orderBy
- GC Blocks Lost等待事件
- Oracle内部错误:ORA-07445[kcflfi()+466] [INT_DIVIDE_BY_ZERO]一例