Spring RabbbitMq 整合


1、先介绍下xml配置。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/rabbit
http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">

<!-- scan service -->
<context:component-scan base-package="com.wang.rabbitmq.service">
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>

<context:property-placeholder location="classpath:application.properties" />

<!-- 连接配置 必须先搭建这个服务才可以进行这一步骤-->
<rabbit:connection-factory id="connectionFactory" host="${mq.host}" username="${mq.username}" password="${mq.password}" port="${mq.port}" virtual-host="${mq.vhost}" />

<rabbit:admin connection-factory="connectionFactory" />

------------------------------------------------------------------------------ 下面这两行只是为了 做消息转换的。这个交换机下面的都按照这个进行消息转换,也可以精确到路由key
<!-- spring template声明 -->
<rabbit:template exchange="test_exchange" id="amqpTemplate"
connection-factory="connectionFactory" message-converter="jsonMessageConverter" />

<!-- 消息对象json转换类 -->
<bean id="jsonMessageConverter"
class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" />
------------------------------------------------------------------------------

<!-- 申明一个消息队列Queue -->
<rabbit:queue id="test_queue" name="test_queue"
durable="true" auto-delete="false" exclusive="false" />

<!-- 交换机定义 -->
<rabbit:direct-exchange name="test_exchange"
durable="true" auto-delete="false" id="test_exchange">
<rabbit:bindings>
<rabbit:binding queue="test_queue" key="test_routing_key" /> <!-- 把这个消息队列绑定在这个交换机上 key="test_routing_key" 表示一组路由 -->
</rabbit:bindings>
</rabbit:direct-exchange>

<!-- 客户端监听的队列 -->
<rabbit:listener-container
connection-factory="connectionFactory" acknowledge="auto">
<rabbit:listener queues="test_queue" ref="queueListenter" />
</rabbit:listener-container>
</beans>

参数配置文件:
mq.host=localhost
mq.username=guest
mq.password=guest
mq.port=5672 //默认端口
mq.vhost=test-host //这个是要在localhost15672管理平台进行配置的,还要把这个归属到哪个用户上面。


创建rabbitmq:virtual host、exchange、queue
参照博客http://blog.csdn.net/zheng911209/article/details/49949303

java代码介绍
【生产者】
public interface MQProducer {

/**
* 发送消息到指定队列
* @param queueKey
* @param object
*/
public void sendDataToQueue(String queueKey, Object object);
}


@Service
public class MQProducerImpl implements MQProducer{

@Autowired
private AmqpTemplate amqpTemplate;

public void sendDataToQueue(String queueKey, Object object) {
// TODO Auto-generated method stub
amqpTemplate.convertAndSend(queueKey, object);
}
}

【消费者】
@Component
public class QueueListenter implements MessageListener {

@Override
public void onMessage(Message msg) {
// TODO Auto-generated method stub
System.out.print("+++++++++++++++++++++++++" + msg.toString());
}

}

 

运行junit 测试类就能看出效果。

转载于:https://www.cnblogs.com/wangjiesheng/p/7728271.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值