Spring集成RabbitMQ

来源:互联网 发布:淘宝评价福利图 编辑:程序博客网 时间:2024/05/01 01:24

1、所需jar包(maven 依赖)

        <dependency>            <groupId>org.springframework.amqp</groupId>            <artifactId>spring-rabbit</artifactId>            <version>1.6.3.RELEASE</version>        </dependency>

2、spring 的xml中配置RabbitMQ

    <!--配置connection-factory,指定连接rabbit server参数 -->    <rabbit:connection-factory id="connectionFactory"        username="${RabbitMQ.username}" password="${RabbitMQ.password}" host="${RabbitMQ.host}" port="${RabbitMQ.port}" />    <!--声明多个消息队列 queue -->    <rabbit:queue id="queue1" name="queue1" durable="true" auto-delete="false" exclusive="false" />    <rabbit:queue id="queue2" name="queue2" durable="true" auto-delete="false" exclusive="false" />    <rabbit:queue id="queue3" name="queue3" durable="true" auto-delete="false" exclusive="false" />    <!--定义rabbit template用于数据的接收和发送 -->    <rabbit:template id="amqpTemplate"  connection-factory="connectionFactory"         exchange="exchangeTest" />    <!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 -->    <rabbit:admin connection-factory="connectionFactory" />    <!-- 消息接收者 -->    <bean id="messageReceiver" class="com.jpxcw.rabbitmq.MessageConsumer"></bean>    <!-- queue litener  观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->    <rabbit:listener-container connection-factory="connectionFactory">             <rabbit:listener queues="queue1,queue2,queue3" ref="messageReceiver"/>    </rabbit:listener-container>    <!-- 定义direct exchange,绑定queue -->    <rabbit:direct-exchange name="exchangeTest" durable="true" auto-delete="false">        <rabbit:bindings>            <rabbit:binding queue="queue1" key="queueTestKey1"></rabbit:binding>            <rabbit:binding queue="queue2" key="queueTestKey2"></rabbit:binding>            <rabbit:binding queue="queue3" key="queueTestKey3"></rabbit:binding>        </rabbit:bindings>    </rabbit:direct-exchange>

3、生产者

import javax.annotation.Resource;import org.springframework.amqp.core.AmqpTemplate;import org.springframework.stereotype.Service;@Servicepublic class MessageProducer {    @Resource    private AmqpTemplate amqpTemplate;    public void sendMessage(String queueKey,Object message){      amqpTemplate.convertAndSend(queueKey,message);    }}

4、消费者

import org.springframework.amqp.core.Message;import org.springframework.amqp.core.MessageListener;public class MessageConsumer implements MessageListener{    @Override    public void onMessage(Message message) {        System.out.println(message);    }}

5、接口测试

@RestControllerpublic class Controller {    @Autowired    private MessageProducer mqProducer;    final String queue_key = "queueTestKey1";     @RequestMapping(value="/rbmq", method = RequestMethod.GET)     public void send(){         String mq="spring and rabmp!";          mqProducer.sendMessage(queue_key,mq);      }}

6、结果输出

(Body:'spring and rabmp!' MessageProperties [headers={}, timestamp=null, messageId=null, userId=null, receivedUserId=null, appId=null, clusterId=null, type=null, correlationId=null, correlationIdString=null, replyTo=null, contentType=text/plain, contentEncoding=UTF-8, contentLength=0, deliveryMode=null, receivedDeliveryMode=PERSISTENT, expiration=null, priority=0, redelivered=false, receivedExchange=exchangeTest, receivedRoutingKey=queueTestKey1, receivedDelay=null, deliveryTag=3, messageCount=0, consumerTag=amq.ctag-OS16HeTstwO8mkfq9XnC8Q, consumerQueue=queue1])
0 0