您的位置:首页 > 编程语言 > Java开发

spring rabbitmq 环境搭建详细说明

2016-05-26 00:11 459 查看
先装 Erlang 18.3    然后安装server RabbitMQ 3.6.2maven 依赖 <!-- rabbitmq --><dependency><groupId>org.springframework.amqp</groupId><artifactId>spring-rabbit</artifactId><version>1.3.5.RELEASE</version>  版本可以自己调高</dependency> 
</pre>mq.xml 配置文件如下 <p></p><p></p><p></p><pre code_snippet_id="1697099" snippet_file_name="blog_20160525_3_3153463" name="code" class="html"><?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:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd"> 
<!--配置connection-factory,指定连接rabbit server参数 -->
<rabbit:connection-factory id="connectionFactory"
port="5672"  username="guest" password="guest" host="127.0.0.1"
/>

<!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 -->
<rabbit:admin connection-factory="connectionFactory" />

<!--定义queue -->
<rabbit:queue name="queueTest" durable="true" auto-delete="false" exclusive="false" />

<!-- 定义direct exchange,绑定queueTest -->
<rabbit:direct-exchange name="exchangeTest" durable="true" auto-delete="false">
<rabbit:bindings>
<rabbit:binding queue="queueTest" key="queueTestKey"></rabbit:binding>
</rabbit:bindings>
</rabbit:direct-exchange>

<bean id="jsonMessageConverter"
class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter"></bean>

<!--定义rabbit template用于数据的接收和发送 -->
<rabbit:template id="amqpTemplate"  connection-factory="connectionFactory"
exchange="exchangeTest"   message-converter="jsonMessageConverter" />

<!-- 消息接收者 -->
<bean id="messageReceiver" class="com.bimatrix.revit.mq.MessageConsumer"></bean>

<!-- queue litener  观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener queues="queueTest" ref="messageReceiver"/>
</rabbit:listener-container>

</beans>
ps: 这里注意下
<pre code_snippet_id="1697099" snippet_file_name="blog_20160525_3_3153463" name="code" class="html">	<rabbit:direct-exchange name="exchangeTest" durable="true" auto-delete="false"><rabbit:bindings><rabbit:binding queue="queueTest" key="queueTestKey"></rabbit:binding></rabbit:bindings></rabbit:direct-exchange>
binding queue 有个name queueTest  后面senddata 用到的key 值 queueTestKeyamqpTemplate.convertAndSend("queueTestKey", message); 测试代码还会说明消费者代码:
package com.***.revit.mq;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.amqp.core.Message;import org.springframework.amqp.core.MessageListener;import org.springframework.stereotype.Component;/*** 功能概要:消费接收** @author flyer* @since  2016年5月25日*///@Service@Componentpublic class MessageConsumer implements MessageListener {private Logger logger = LoggerFactory.getLogger(MessageConsumer.class);@Overridepublic void onMessage(Message message) {//logger.info("receive message:{}",message);System.out.println("receive message:{}"+message);}}
生产者代码/*** 功能概要:消息产生,提交到队列中去** @author flyer* @since 2016年5月15日*/@Servicepublic class MessageProducer {private Logger logger = LoggerFactory.getLogger(MessageProducer.class);@Resourceprivate AmqpTemplate amqpTemplate;public void sendMessage(Object message) {logger.info("to send message:{}", message);amqpTemplate.convertAndSend("queueTestKey", message);}}测试代码import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.amqp.core.AmqpTemplate;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;//TestQueue.java@RunWith(value = SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath*:config/applicationContext.xml" })public class TestQueue {@AutowiredAmqpTemplate amqpTemplate;final String queue_key = "queueTestKey";@Testpublic void send() {try {System.out.println("-----------------------------------------");amqpTemplate.convertAndSend(queue_key, "NIHAO..............");System.out.println("-----------------------------------------");} catch (Exception e) {// LOGGER.error(e);}}}启动tomcat  然后运行test 代码服务端打印receive message:{}(Body:'"NIHAO.............."'MessageProperties [headers={__TypeId__=java.lang.String}, timestamp=null, 
messageId=null, userId=null, appId=null, clusterId=null, type=null, correlationId=null, replyTo=null,
contentType=application/json, contentEncoding=UTF-8, contentLength=0, deliveryMode=PERSISTENT, expiration=null,
 priority=0, redelivered=false, receivedExchange=exchangeTest, receivedRoutingKey=queueTestKey, deliveryTag=1, messageCount=0])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: