RabbitMQ入门教程之二--》spring+rabbitmq简单demo

1. maven工程的pom文件需要添加的依赖
<dependency>
		    <groupId>org.springframework.amqp</groupId>
		    <artifactId>spring-rabbit</artifactId>
		    <version>1.6.3.RELEASE</version>
		</dependency>

+spring的全部依赖+jackson相关的依赖


2. spring-config.xml需要添加的配置如下:

 <rabbit:connection-factory id="connectionFactory" host="127.0.0.1" 
    			username="wuwh" password="ganbare" port="5672"  virtual-host="/"/>
  
   
    <rabbit:admin connection-factory="connectionFactory"/>

    <!-- spring template声明-->
    <rabbit:template exchange="amqpExchange" id="amqpTemplate"  connection-factory="connectionFactory"  message-converter="jsonMessageConverter" />

    <!-- 消息对象json转换类 -->
    <bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" />  
	
	<rabbit:queue id="test_queue" name="test_queue" durable="true" auto-delete="false" exclusive="false" />
	
	<rabbit:direct-exchange name="amqpExchange" durable="true" auto-delete="false" id="test-mq-exchange">
	    <rabbit:bindings>
	        <rabbit:binding queue="test_queue" key="test_queue_key"/>
	    </rabbit:bindings>
	</rabbit:direct-exchange>
	
	<bean id="queueListenter" class="cms.open.itPlatform.service.rq.listener.QueueListenter">
	</bean>
	
	<rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto">
	    <rabbit:listener queues="test_queue" ref="queueListenter"/>
	</rabbit:listener-container>


3. MQ producer的interface:

package cms.open.itPlatform.service.rq;

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


MQ producer的impl

package cms.open.itPlatform.service.rq.impl;

import org.apache.log4j.Logger;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cms.open.itPlatform.service.rq.IMQProducer;

@Service
public class MQProducerImpl implements IMQProducer {

	@Autowired
    private AmqpTemplate amqpTemplate;
	
    private final static Logger LOGGER = Logger.getLogger(MQProducerImpl.class);
    final String queue_key = "test_queue_key";
    /* (non-Javadoc)
     * @see com.stnts.tita.rm.api.mq.MQProducer#sendDataToQueue(java.lang.String, java.lang.Object)
     */
    @Override
    public void sendDataToQueue(String queueKey, Object object) {
        try {
            amqpTemplate.convertAndSend(queueKey, object);
        } catch (Exception e) {
            LOGGER.error(e);
        }
    }
}

队列监听类

package cms.open.itPlatform.service.rq.listener;

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;

//@Component
public class QueueListenter implements MessageListener{
	@Override
    public void onMessage(Message msg) {
        try{
            System.err.println(new String(msg.getBody(),"UTF-8"));
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

测试类代码:

package cms.open.itPlatform.service.rq.tt;

import java.util.HashMap;
import java.util.Map;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.testng.annotations.Test;

import cms.open.itPlatform.service.rq.IMQProducer;
import cms.open.itPlatform.service.rq.impl.MQProducerImpl;

public class RQTest {
    final String queue_key = "test_queue_key";

    @Test
    public void send(){
    	ApplicationContext context = new ClassPathXmlApplicationContext("classpath:/spring-config.xml");
        IMQProducer mqProducer = context.getBean(MQProducerImpl.class);
    	Map<String,Object> msg = new HashMap<String,Object>();
        msg.put("data","hello,rabbmitmq!");
        mqProducer.sendDataToQueue(queue_key,msg);
    }
}



阅读完 RabbitMQ入门教程之一、二后,相信你已经能够亲手在windows环境下搭建rabbitmq-server,并写出第一个自己的demo


rabbitmq原理以及更多知识请参考博文:http://www.cnblogs.com/shanyou/p/4067250.html

以及官网:http://www.rabbitmq.com/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值