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集成相关推荐

  1. JMS学习(2):ActiveMQ简单介绍以及安装

    现实的企业中,对于消息通信的应用一直都非常的火热,而且在J2EE的企业应用中扮演着特殊的角色,所以对于它研究是非常有必要的. 上篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了消息通信的规范JM ...

  2. ActiveMQ学习总结(3)——spring整合ActiveMQ

    2019独角兽企业重金招聘Python工程师标准>>> 1.参考文献 Spring集成ActiveMQ配置 Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇 ...

  3. Spring集成Activemq使用

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

  4. ActiveMQ学习总结(10)——ActiveMQ采用Spring注解方式发送和监听

    对于ActiveMQ消息的发送,原声的api操作繁琐,而且如果不进行二次封装,打开关闭会话以及各种创建操作也是够够的了.那么,Spring提供了一个很方便的去收发消息的框架,spring jms.整合 ...

  5. ActiveMQ学习笔记(21)----ActiveMQ集成Tomcat

    1. 监控和管理Broker Web Console 方式:直接访问ActiveMQ的管理页面:http://localhost:8161/admin,默认的用户名和密码是admin/admin.具体 ...

  6. JMS学习十 ActiveMQ支持的传输协议

    JMS学习(ActiveMQ支持的传输协议) ActiveMQ提供了一种连接机制,这种连接机制使用传输连接器(TransportConnector)实现客户端与代理(client - to - bro ...

  7. jms mysql_JMS学习九(ActiveMQ的消息持久化到Mysql数据库)

    1.将连接Mysql数据库的jar文件,放到ActiveMQ的lib目录下 2.修改ActiveMQ的conf目录下的active.xml文件,修改数据持久化的方式 2.1  修改原来的kshadb的 ...

  8. Spring集成JMS入门

    1.预备知识 在学习Spring集成JMS之前最好可以是先去了解JMS基本概念和ActiveMQ 自己学习Spring整合JMS的一些心得,希望可以帮到大家 2.Spring整合JMS 2.1.使用点 ...

  9. linux C++ 环境下的ActiveMQ学习

    ActiveMQ 1.概述 ActiveMQ 是Apache出品,最流行的.功能强大的即时通讯和集成模式的开源服务器.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Pr ...

  10. ActiveMQ 学习(VM Transport)

    http://jinguo.iteye.com/blog/233947 1 JMS 在介绍ActiveMQ之前,首先简要介绍一下JMS规范. 1.1 JMS的基本构件 1.1.1 连接工厂 连接工厂是 ...

最新文章

  1. 张杰和机器人_张杰 - 精密运动与先进机器人技术团队 - robotics.nimte.ac.cn
  2. web模拟终端博客系统
  3. 中国如何成为一流国家
  4. bps计算机,bps指的是计算机的什么
  5. ‘Series‘ object has no attribute ‘sort‘
  6. 数据备份基础之备份类型
  7. electron 使用中的注意事项
  8. JSP页面最终是编译为Servlet执行的
  9. 热像仪 二次开发 c++_重庆多功能红外线热像仪方案
  10. CTL_CODE说明
  11. php 在线人数 mysql_PHP+MYSQL实例:编写网站在线人数的程序代码
  12. windows 编程 —— 消息与参数(滚动条、键盘、鼠标)
  13. python中的sys模块和os_python中os和sys模块的区别与常用方法总结
  14. 【习题 8-10 UVA - 1614】Hell on the Markets
  15. 开心网游戏界面Html
  16. linux cximage动态库,64位Linux编译cximage手记
  17. visio连接线设置
  18. 弘辽科技:拼多多批发价格会影响活动价格吗?商家要不要改价?
  19. 索泰显卡超频软件测试要多少时间,索泰显卡超频软件(FireStorm)
  20. 项目记录-手机号码限制频次

热门文章

  1. Objective-C语言的动态性
  2. cfdiv2/c/找规律
  3. python 下字符串格式时间比较
  4. 使用 WebBrowser 操作 js
  5. 在VS2005中使用添加变量向导十分的
  6. Tiray.SMSTiray.SMSTiray.SMSTiray.SMSTiray.SMSTiray.SMS
  7. [BFS]JZOJ 4672 Graph Coloring
  8. vue13过滤器 debounce延迟、limitBy、filterBy、orderBy
  9. GC Blocks Lost等待事件
  10. Oracle内部错误:ORA-07445[kcflfi()+466] [INT_DIVIDE_BY_ZERO]一例