RabbitMQ学习之spring配置文件rabbit标签的使用

下面我们通过一个实例看一下rabbit的使用。

1.实现一个消息监听器ReceiveMessageListener.java

package org.springframework.amqp.core;

/**
 * Listener interface to receive asynchronous delivery of Amqp Messages.
 *
 * @author Mark Pollack
 */
public interface MessageListener {

	void onMessage(Message message);

}

2.消费者配置Consumer.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:context="http://www.springframework.org/schema/context"
       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/rabbit
                http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">
 
   <!-- 连接服务配置  -->
    <rabbit:connection-factory id="connectionFactory" host="192.168.36.102" username="admin"
        password="admin" port="5672" virtual-host="/"  channel-cache-size="5" />
         
   <rabbit:admin connection-factory="connectionFactory"/>
   
   <!-- queue 队列声明-->
   <rabbit:queue durable="true" auto-delete="false" exclusive="false" name="spring.queue.tag"/>
    
    
   <!-- exchange queue binging key 绑定 -->
    <rabbit:direct-exchange name="spring.queue.exchange" durable="true" auto-delete="false">
        <rabbit:bindings>
            <rabbit:binding queue="spring.queue.tag" key="spring.queue.tag.key"/>
        </rabbit:bindings>
    </rabbit:direct-exchange>
    
    <bean id="receiveMessageListener"
		class="cn.slimsmart.rabbitmq.demo.spring.tag.ReceiveMessageListener" />
     
    <!-- queue litener  观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
    <rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto" >
        <rabbit:listener queues="spring.queue.tag" ref="receiveMessageListener" />
    </rabbit:listener-container>
</beans>
3.生产者配置Producer.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:context="http://www.springframework.org/schema/context"
	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/rabbit
                http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">

	<!-- 连接服务配置 -->
	<rabbit:connection-factory id="connectionFactory"
		host="192.168.36.102" username="admin" password="admin" port="5672"
		virtual-host="/" channel-cache-size="5" />

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

	<!-- queue 队列声明 -->
	<rabbit:queue  durable="true"
		auto-delete="false" exclusive="false" name="spring.queue.tag" />


	<!-- exchange queue binging key 绑定 -->
	<rabbit:direct-exchange name="spring.queue.exchange"
		durable="true" auto-delete="false">
		<rabbit:bindings>
			<rabbit:binding queue="spring.queue.tag" key="spring.queue.tag.key" />
		</rabbit:bindings>
	</rabbit:direct-exchange>

	<!-- spring amqp默认的是jackson 的一个插件,目的将生产者生产的数据转换为json存入消息队列,由于Gson的速度快于jackson,这里替换为Gson的一个实现 -->
	<bean id="jsonMessageConverter"
		class="cn.slimsmart.rabbitmq.demo.spring.tag.Gson2JsonMessageConverter" />

	<!-- spring template声明 -->
	<rabbit:template id="amqpTemplate" exchange="spring.queue.exchange"  routing-key="spring.queue.tag.key"
		connection-factory="connectionFactory" message-converter="jsonMessageConverter" />
</beans>
4.消费者启动类ConsumerMain.java

package cn.slimsmart.rabbitmq.demo.spring.tag;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ConsumerMain {

	public static void main(String[] args) {
		new ClassPathXmlApplicationContext("Consumer.xml");  
	}
}
5.生产者启动类ProducerMain.java

package cn.slimsmart.rabbitmq.demo.spring.tag;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class ProducerMain {
	
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("Producer.xml");  
        AmqpTemplate amqpTemplate = context.getBean(RabbitTemplate.class);   
        User user = new User();
        user.setName("niuniu");
        amqpTemplate.convertAndSend(user);
	}
}

先启动消费者,监听接收消息,再启动生产者发送消息。

输出: data :{"name":"niuniu"}

如下4中转发器类型标签

rabbit:fanout-exchange

rabbit:direct-exchange

rabbit:topic-exchange

rabbit:headers-exchange


参考:http://blog.csdn.net/michaelzhaozero/article/details/23741511

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值