spring jms

原创 2015年07月10日 10:43:33

1. spring 配置

  

<bean id="jmsConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory"
          destroy-method="stop">
        <property name="connectionFactory">
            <bean class="org.apache.activemq.ActiveMQConnectionFactory">
                <property name="brokerURL" value="failover:(tcp://localhost:61616)" />
                <property name="useAsyncSend" value="true" />
                <property name="redeliveryPolicy" ref="redeliveryPolicy" />
                <property name="prefetchPolicy" ref="prefetchPolicy" />

            </bean>
        </property>
        <property name="maxConnections" value="100" />
    </bean>

    <!--  Spring JmsTemplate config -->
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <!--  lets wrap in a pool to avoid creating a connection per send -->
        <property name="connectionFactory" ref="jmsConnectionFactory" />
        <property name="sessionTransacted" value="true" />
        <property name="defaultDestination" ref="bookGift"/>
        <property name="deliveryMode" value="2"/>
    </bean>

    <bean id="bookGift" class="org.apache.activemq.command.ActiveMQQueue">
        <constructor-arg index="0" value="bookGift" />
    </bean>

    <!-- 配置消息队列监听者(Queue),自己写的实现 onMessage方法 -->
    <bean id="queueMessageListener" class="cn.valenon.test.jms.JmsListener" />

    <!-- 消息监听容器(Queue) -->
    <bean id="jmsContainer"
          class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="jmsConnectionFactory" />
        <property name="destination" ref="bookGift" />
        <property name="messageListener" ref="queueMessageListener" />
    </bean>

2. 发送消息的服务:接口和实现类

 

interface MessageProducerService {

    /**
     * 向指定队列发送消息
     */
    public void sendMessage(Destination destination, final String msg)

/**
 * 向默认队列发送消息
 */
    public void sendMessageOnDefault(final BookMessage msg)

}

class MessageProducerServiceImpl implements MessageProducerService {
    @Autowired
    private JmsTemplate jmsTemplate

    /**
     * 向指定队列发送消息
     */
    @Override
    public void sendMessage(Destination destination, String msg) {
        jmsTemplate.convertAndSend(destination,msg)
    }

/**
 * 向默认队列发送消息
 */
    @Override
    public void sendMessageOnDefault(final BookMessage msg) {
        Destination destination =  jmsTemplate.getDefaultDestination();
        jmsTemplate.convertAndSend(destination,msg)
    }
}

BookMessage是一个自定义的POJO,作为消息体,需要实现Serilizable接口

class BookMessage implements Serializable {

    String name;

    int age;

    public String toString(){
        return this.name + ";" + this.age
    }
}

3. 消息监听类:

  

class JmsListener implements MessageListener {
    @Override
    void onMessage(Message message) {
        try {
            ObjectMessage tm = (ObjectMessage) message;
            BookMessage bm = tm.getObject();
        } catch (JMSException e) {
            e.printStackTrace();
        }
    }
}
也可以直接发送String,这时,就需要将Message转换成TextMessage,而不是ObjectMessage。

Spring整合JMS(消息中间件)实例

本篇文章主要描述了如何配置Spring-JMS,至于为何这样配置及Spring-JMS相关介绍,请阅读这篇文章:Spring整合JMS(消息中间件)。我们这里的消息broker用的是ActiveMQ。...
  • suifeng3051
  • suifeng3051
  • 2016年06月20日 16:16
  • 3225

spring学习:与jms的集成

简介     在前面的 一些文章里,我曾经对消息队列编程,以及消息队列通信方式做了一些总结。总的来说,那些示例是采用activemq服务器并且使用原生的代码来访问它们。在实际的代码实现中,采用原生a...
  • pingyan158
  • pingyan158
  • 2016年03月29日 10:58
  • 858

使用Spring JMS收发消息

摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息。可以看出,每次收...
  • HUXU981598436
  • HUXU981598436
  • 2016年03月28日 14:24
  • 704

Spring整合JMS——基于ActiveMQ实现(附源码)

声明:本文转载地址:http://elim.iteye.com/blog/1893038,如不能转载,请联系博主。 此源码非彼源码,如需下载原文源码,请访问原文链接。 此源码是博主经过改造测试的,...
  • johnstrive
  • johnstrive
  • 2016年09月22日 16:58
  • 1385

Spring整合JMS(消息中间件)

本篇主要介绍了异步消息机制及Spring对JMS封装,本篇文章讲解较为详细,如果想直接看如何配置,可以参考: Spring整合JMS(消息中间件)实例,但还是建议大家先看完本篇文章。一、消息异步处理类...
  • suifeng3051
  • suifeng3051
  • 2016年06月20日 10:18
  • 9005

JMS简介以及WebLogic配置JMS例子

1.  技术基础简介 1.1  JMS 1.1.1  JMS简介 JMS(Java Messaging Service)是Java平台上有关面向消息中间件的技术规范,它便于消息系统中的Java应用程序...
  • wyc_cs
  • wyc_cs
  • 2013年05月08日 16:52
  • 1579

深入浅出JMS(七)--使用Spring JMS收发消息

1.使用maven管理依赖包 dependencies> dependency> groupId>junitgroupId> artifactId>junitartifactId> v...
  • helongzhong
  • helongzhong
  • 2017年03月18日 16:27
  • 540

Spring对JMS的支持

关于JMS的基础知识请参阅一篇写的简洁漂亮的文章,这篇文章将JMS的基本概念,以及JMS中主要类都介绍了。 关于JMS和AMQP的区别请参照这篇文章AMQP相对于JMS是一种跨语言的通用的协议下面开始...
  • sn_gis
  • sn_gis
  • 2017年04月21日 20:52
  • 331

Spring整合JMS——事务管理

转:http://haohaoxuexi.iteye.com/blog/1893676 Spring提供了一个JmsTransactionManager用于对JMS Connection...
  • s296850101
  • s296850101
  • 2016年08月30日 11:16
  • 1007

Spring整合JMS(四)——事务管理

Spring提供了一个JmsTransactionManager用于对JMS ConnectionFactory做事务管理。这将允许JMS应用利用Spring的事务管理特性。JmsTransactio...
  • z69183787
  • z69183787
  • 2015年06月24日 16:46
  • 868
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring jms
举报原因:
原因补充:

(最多只允许输入30个字)