spring rabbitmq 环境搭建详细说明


先装 Erlang 18.3    然后安装server RabbitMQ 3.6.2

maven 依赖 

<!-- 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 值 queueTestKey


amqpTemplate.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
@Component
public class MessageConsumer implements MessageListener {
	
	private Logger logger = LoggerFactory.getLogger(MessageConsumer.class);

	@Override
	public void onMessage(Message message) {
		//logger.info("receive message:{}",message);
		System.out.println("receive message:{}"+message);
	}

}



生产者代码


/**
 * 功能概要:消息产生,提交到队列中去
 * 
 * @author flyer
 * @since 2016年5月15日
 */
@Service
public class MessageProducer {


private Logger logger = LoggerFactory.getLogger(MessageProducer.class);


@Resource
private 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 {
	@Autowired
	AmqpTemplate amqpTemplate;

	final String queue_key = "queueTestKey";

	@Test
	public 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])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值