spring 集成apache qpid 简单demo

spring 提供spring-jms模块,用以集成JMS到spring 容器中,并提供jmsTemplate模版类来操作jms,类似集成jdbc数据库操作一样。

首先,我们新建一个applicationContext-qpid.xml来做qpid的集成操作

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        ">

    <!-- Spring提供的JMS工具类,它可以进行消息发送、接收等 -->
    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
        <property name="connectionFactory" ref="jQpidConnectionFactory"/>
    </bean>

    <!-- 链接到java broker服务器  -->
    <bean id="jQpidConnectionFactory" class="org.apache.qpid.client.AMQConnectionFactory">
        <constructor-arg index="0" value="amqp://guest:[email protected]/?brokerlist=‘tcp://localhost:5672‘" />
    </bean>

    <!-- 缓存会话,保证单链接 -->
    <bean id="jCachingConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
        <property name="targetConnectionFactory" ref="jQpidConnectionFactory" />
        <property name="sessionCacheSize" value="1" />
        <property name="reconnectOnException" value="true" />
    </bean>

    <!-- 订阅路径 -->
    <bean id="jDestination" class="org.apache.qpid.client.AMQAnyDestination">
        <constructor-arg index="0" value="ADDR:message_queue; {create: always}" />
    </bean>

    <!-- 接收事件处理器 -->
    <bean id="jReceiver" class="com.liuxg.qpid.receiver.MsgReceiver" />

    <!-- 事务处理 -->
    <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"/>

    <!-- 默认消息监听器  -->
    <bean id="deviceStatusContainer"
        class="org.springframework.jms.listener.DefaultMessageListenerContainer">
        <property name="connectionFactory" ref="jCachingConnectionFactory" />
        <property name="exceptionListener" ref="jCachingConnectionFactory" />
        <property name="messageListener" ref="jReceiver" />
        <property name="destination" ref="jDestination" />
        <property name="transactionManager" ref="transactionManager"/>
    </bean>

</beans>

然后需要把applicationContext-qpid.xml添加到web.xml的contextConfigLocation中

<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:META-INF/applicationContext*.xml</param-value>
</context-param>

然后,在发送端,可以利用模版类发送消息

@Service
public class SenderService {

    @Autowired JmsTemplate jmsTemplate;
    @Autowired AMQAnyDestination deviceStatusDestination;

    /**
      * 发送消息
      */
    public void sendMsg(){

        jmsTemplate.send(deviceStatusDestination, new MessageCreator() {
            @Override
            public Message createMessage(Session session) throws JMSException {
                return session.createTextMessage("hello world !!");
            }
        });
    }

}

这里发送的时候,可以利用spring的消息转化器,它支持String 和TextMessage, byte[] 和BytesMesssage还有java.util.Map 和 MapMessage的相互转化,例如下面

public void sendWithConversion() {
    Map map = new HashMap();
    map.put("Name", "Mark");
    map.put("Age", new Integer(47));
    jmsTemplate.convertAndSend("testQueue", map, new MessagePostProcessor() {
        public Message postProcessMessage(Message message) throws JMSException {
            message.setIntProperty("AccountID", 1234);
            message.setJMSCorrelationID("123-00001");
            return message;
        }
    });
}

最后在接收端,可以定义一个类实现SessionAwareMessageListener或者DeviceStatusReceiver,这里我们实现SessionAwareMessageListener

public class MsgReceiver implements SessionAwareMessageListener<Message>  {

    @Override
    public void onMessage(Message message, Session session) throws JMSException {
        JMSTextMessage xx = (JMSTextMessage) message;
        String text = xx.getText();
        System.out.println(text);
    }

}
时间: 2024-10-12 12:27:43

spring 集成apache qpid 简单demo的相关文章

ubuntu14.04,eclipse集成maven,简单demo

1.ubuntu安装maven A.首先先到官网下载maven版本,http://maven.apache.org/download.cgi 我选择的是3.2.5版本的 B.配置maven坏境于本机 C.测试maven安装成功(maven需要jdk的环境,所以安装maven之前要把jdk的环境搭建起) 2.eclipse安装maven插件 A.首先下载Maven Integration for Eclipse,这个在线安装即可! 3.eclipse集成maven A.将eclipse的maven

Spring MVC +MyBatis +MySQL 简单的登录查询 Demo 解决了mybatis异常

忙活了大半天,饭也没顾得上吃,哎许久不动手,一动手就出事,下面请看今天的重头戏,额吃个饭回来再发了! 1.整体结构 2.准备工作 数据库: --Mysql 5.6 创建数据库 wolf CREATE DATABASE wolf; 创建用户表 user create table user( id int  AUTO_INCREMENT  primary key, name varchar(25) not null, pwd varchar(20) not null, create_time dat

RabbitMq 集成 spring boot 消息队列 入门Demo

spring boot 集成 RabbitMq还是很方便的.现在来一个简单的例子来集成rabbitmq.入门demo. 主要概念: 其中比较重要的概念有 4 个,分别为:虚拟主机,交换机,队列,和绑定. 虚拟主机:一个虚拟主机持有一组交换机.队列和绑定.为什么需要多个虚拟主机呢?很简单,RabbitMQ当中,用户只能在虚拟主机的粒度进行权限控制. 因此,如果需要禁止A组访问B组的交换机/队列/绑定,必须为A和B分别创建一个虚拟主机.每一个RabbitMQ服务器都有一个默认的虚拟主机"/"

Spring的简单demo

---------------------------------------- 开发一个Spring的简单Demo,具体的步骤如下: 1.构造一个maven项目 2.在maven项目的pom.xml文件中添加spring的依赖包 3.开发一个接口Api 和两个实现类ApiOne,ApiTwo 4.新增Spring的配置文件applicationContext.xml 5.编写测试类Client 下面开始具体每个步骤的描述: 步骤1:构造一个maven项目 springTest 步骤2:在mav

Spring之AOP简单demo

1.添加JAR包,出了Spring自身的Jar包还要一些依赖的JAR包,不然会报ClassNotFound. Student.java package com.lubby.bean; import org.springframework.stereotype.Component; @Component("student") public class Student { private String id; private String name; public Student() {

ActiveMQ(二)与Spring集成

声明 转载请注明出处! Reprint please indicate the source! http://www.hiknowledge.top/2017/04/03/activemq%ef%bc%88%e4%ba%8c%ef%bc%89%e4%b8%8espring%e9%9b%86%e6%88%90/ ActiveMQ与Spring集成 由于历史原因,JMS有4个版本.Spring提供了用于简化JMS API使用的抽象框架,并且对用户屏蔽了JMS API中1.0.2和1.1版本的差异.

RabbitMQ安装和使用(和Spring集成)

一.安装Rabbit MQ Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang.通过下面两个连接下载安装3.2.3 版本: 下载并安装 Eralng OTP For Windows (vR16B03) 运行安装 Rabbit MQ Server Windows Installer (v3.2.3) 具体操作步骤参考:在 Windows 上安装Rabbit MQ 指南 本人遇到的问题 当安装RabbitMQ后,使用rabbitmqctl

Hessian入门(包括与Spring集成)

A.纯Hessian接口开发步骤 Hessian-JAVA服务器端必须具备以下几点: * 1.包含Hessian的jar包(hessian-4.0.37.jar) * 2.设计一个接口,用来给客户端调用(IHessian.java) * 3.实现该接口的功能(IHessianImpl.java) * 4.配置web.xml,配好相应的Servlet(web.xml) * 5.对象必须实现Serializable接口(Foo.java) Hessian-JAVA服务端代码预览图: 1.包含Hess

Struts2+Spring集成合并

前边单独总结了Struts2,Spring和Ibaits框架了,那么怎么结合使用呢?这次先来看一下Sturts2和Spring的集成合并.其实挺简单的,就是导入各自的jar包以及连接彼此的jar包,分好彼此的工作就可以了. 好看一下Struts2+Spring的集成方案!  Struts2和Spring集成有两种方案,是根据action的创建来划分的!  方案一,Struts2负责流程,Spring负责对象的创建:Action由Struts2框架负责创建:Service由Spring框架负责创建