ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RabbitMQ之交换器direct

2019-06-21 16:55:10  阅读:226  来源: 互联网

标签:交换器 direct RabbitMQ mq springframework key org import config


消费者Demo

ErrorReceiver.java

package com.example.rabbitmq.util;

import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.*;
import org.springframework.stereotype.Component;
/**
 * 消息接收者
 * @author Administrator
 * @RabbitListener bindings:绑定队列
 * @QueueBinding  value:绑定队列的名称
 *                exchange:配置交换器
 *
 * @Queue value:配置队列名称
 *        autoDelete:是否是一个可删除的临时队列
 *
 * @Exchange value:为交换器起个名称
 *           type:指定具体的交换器类型
 */
@Component
@RabbitListener(bindings = @QueueBinding(
        value = @Queue(value = "${mq.config.queue.error}",autoDelete = "true"),
        exchange = @Exchange(value = "${mq.config.exchange}",type = ExchangeTypes.DIRECT),
        key = "${mq.config.queue.error.routing.key}"
))
public class ErrorReceiver {
    @RabbitHandler
    public void rabbitmqListener(String msg){
        System.out.printf("接收............Error:" + msg);
    }
}

InfoReceiver.java

package com.example.rabbitmq.util;

import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.*;
import org.springframework.stereotype.Component;

/**
 * 消息接收者
 * @author Administrator
 * @RabbitListener bindings:绑定队列
 * @QueueBinding  value:绑定队列的名称
 *                exchange:配置交换器
 *
 * @Queue value:配置队列名称
 *        autoDelete:是否是一个可删除的临时队列
 *
 * @Exchange value:为交换器起个名称
 *           type:指定具体的交换器类型
 */
@Component
@RabbitListener(bindings = @QueueBinding(
        value = @Queue(value = "${mq.config.queue.info}",autoDelete = "true"),
        exchange = @Exchange(value = "${mq.config.exchange}",type = ExchangeTypes.DIRECT),
        key = "${mq.config.queue.info.routing.key}"
))
public class InfoReceiver {
    @RabbitHandler
    public void rabbitmqListener(String msg){
        System.out.printf("接收............Info:" + msg);
    }
}

application.properties

spring.application.name=springcloud-mq

spring.rabbitmq.host=10.250.***.**
spring.rabbitmq.port=5672
spring.rabbitmq.username=*****
spring.rabbitmq.password=*****


#交换器类型
mq.config.exchange=log.direct

#路由键名称
mq.config.queue.info.routing.key=log.info.routing.key

#队列名称
mq.config.queue.info=log.info

#路由键名称
mq.config.queue.error.routing.key=log.error.routing.key

#队列名称
mq.config.queue.error=log.error

生产者Demo

SendMsg.java

package com.example.rabbitmq.util;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class SendMsg {
    @Autowired
    private AmqpTemplate amqpTemplate;
    @Value("${mq.config.exchange}")
    private String exchange;
    @Value("${mq.config.queue.info.routing.key}")
    private String routingKeyInfo;
    @Value("${mq.config.queue.error.routing.key}")
    private String routingKeyError;

    public void sendMsg(String msg) {
        amqpTemplate.convertAndSend(exchange,routingKeyError,msg);
    }
}

application.properties

spring.application.name=springcloud-mq

spring.rabbitmq.host=10.250.***.**
spring.rabbitmq.port=5672
spring.rabbitmq.username=******
spring.rabbitmq.password=*****

#交换器类型
mq.config.exchange=log.direct

#路由键名称
mq.config.queue.info.routing.key=log.info.routing.key

#路由键名称
mq.config.queue.error.routing.key=log.error.routing.key

RabbitmqApplicationTests.java

package com.example.rabbitmq;

import com.example.rabbitmq.util.SendMsg;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest(classes = RabbitmqApplication.class)
public class RabbitmqApplicationTests {

    @Autowired
    SendMsg sendMsg;
    @Test
    public void contextLoads() throws InterruptedException {
        while (true){
            Thread.sleep(1000);
            sendMsg.sendMsg("hello world");
        }
    }

}

 

标签:交换器,direct,RabbitMQ,mq,springframework,key,org,import,config
来源: https://www.cnblogs.com/ShaoXin/p/11065451.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有