生产者发送消息到交换机并指定一个路由key,消费者队列绑定到交换机时要制定路由key(key匹配就能接受消息,key不匹配就不能接受消息)

引入依赖:

     <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>

消费者:

配置文件:

spring.application.name=springcloud-mq
spring.rabbitmq.host=192.168.70.131
spring.rabbitmq.port=5672
spring.rabbitmq.username=oldlu
spring.rabbitmq.password=123456
#设置交换器的名称
mq.config.exchange=log.direct
#info 队列名称
mq.config.queue.info=log.info
#info 路由键
mq.config.queue.info.routing.key=log.info.routing.key
#error 队列名称
mq.config.queue.error=log.error
#error 路由键
mq.config.queue.error.routing.key=log.error.routing.key

消息接收者一:

/**
* 消息接收者
* @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="tr
ue"),
exchange=@Exchange(value="${mq.config.exchange}",type=Excha
ngeTypes.DIRECT),
key="${mq.config.queue.info.routing.key}"
)
)
public class InfoReceiver {/**
* 接收消息的方法。采用消息队列监听机制
* @param msg
*/
@RabbitHandler
public void process(String msg){System.out.println("Info........receiver: "+msg);
}
}

消息接收者二:

/**
* 消息接收者
* @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="t
rue"),
exchange=@Exchange(value="${mq.config.exchange}",type=Excha
ngeTypes.DIRECT),
key="${mq.config.queue.error.routing.key}"
)
)
public class ErrorReceiver {/**
* 接收消息的方法。采用消息队列监听机制
* @param msg
*/
@RabbitHandler
public void process(String msg){System.out.println("Error..........receiver: "+msg);
}
}

生产者:

spring.application.name=springcloud-mq
spring.rabbitmq.host=192.168.70.131
spring.rabbitmq.port=5672
spring.rabbitmq.username=oldlu
spring.rabbitmq.password=123456
#设置交换器的名称
mq.config.exchange=log.direct
#info 队列名称
mq.config.queue.info=log.info
#info 路由键
mq.config.queue.info.routing.key=log.info.routing.key
#error 队列名称
mq.config.queue.error=log.error
#error 路由键
mq.config.queue.error.routing.key=log.error.routing.key
/**
* 消息发送者
* @author Administrator
*
*/
@Component
public class Sender {@Autowired
private AmqpTemplate rabbitAmqpTemplate;
//exchange 交换器名称
@Value("${mq.config.exchange}")
private String exchange;
//routingkey 路由键
@Value("${mq.config.queue.error.routing.key}")
private String routingkey;
/*
* 发送消息的方法
*/
public void send(String msg){//向消息队列发送消息
//参数一:交换器名称。
//参数二:路由键
//参数三:消息
this.rabbitAmqpTemplate.convertAndSend(this.exchange,
this.routingkey, msg);
}
}

RabbitMq | springboot (路由模式RoutingKey)整合Direct交换器相关推荐

  1. RabbitMQ,RabbitMQ 的工作模式,Spring 整合 RabbitMQ,Springboot 整合RabbitMQ

    什么是RabbitMQ 1.1 MQ概述 MQ全称 Message Queue(消息队列),是在消息的传输过程中保存消息的容器.多用于分布式系统之间进行通信. ⚫ MQ,消息队列,存储消息的中间件 ⚫ ...

  2. RabbitMQ(六) Routing路由模式

    概述 所谓RabbitMq中路由模式(Routing)为我们在将发送消息队列以及接收消息队列(queue)绑定到交换机(exchange)时指定了一个RoutingKey.然后我们在通过连接信道向交换 ...

  3. rabbitmq-路由模式-routingkey

    [README] 本文po出 rabbitmq路由模式: [1]intro to 路由模式 特点1)队列与交换机的绑定,不能是任意绑定, 而是指定一个路由key-routingkey: 特点2)消息的 ...

  4. Springboot整合RabbitMQ,包含direct,topic,fanout三种模式的整合

    一 RabbitMQ的介绍 RabbitMQ是消息中间件的一种,消息中间件即分布式系统中完成消息的发送和接收的基础软件.这些软件有很多,包括ActiveMQ(apache公司的),RocketMQ(阿 ...

  5. RabbitMQ的Routing 路由模式(Direct)

    RabbitMQ的Routing 路由模式 模式说明: 队列与交换机的绑定,不能是任意绑定了,而是要指定一个 RoutingKey(路由key) 消息的发送方在向 Exchange 发送消息时,也必须 ...

  6. RabbitMQ路由模式(direct)

    1.什么是路由模式(direct) 路由模式是在使用交换机的同时,生产者指定路由发送数据,消费者绑定路由接受数据.与发布/订阅模式不同的是,发布/订阅模式只要是绑定了交换机的队列都会收到生产者向交换机 ...

  7. RabbitMQ,Springboot整合RabbitMQ实现 消息可靠性投递,Consumer ACK,TTL,死信队列,使用TTL+死信队列=延迟队列

    搭建SpringBoot项目,用于演示 springboot版本 <!-- spring boot --><dependency><groupId>org.spri ...

  8. RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器

    本系列是「RabbitMQ实战:高效部署分布式消息队列」和 「RabbitMQ实战指南」书籍的读书笔记. RabbitMQ 中重要概念 1. 生产者 生产者(producer)创建消息,然后发送到代理 ...

  9. 【分布式】SpirngBoot 整合RabbitMQ、Exchagne模式、确认消费

    分布式 内容管理 SpringBoot 整合RabbitMQ 整合过程 多种消息模型 --- Exchange调度策略 Fanout 订阅 .广播模式 ---- 适用于 业务数据需要广播场景: 用户操 ...

最新文章

  1. linux表示逻辑分区的标号,在Linux系统的设备文件中,代表第2个SCSI硬盘的第1个逻辑分区的设备文件是()。...
  2. 一个在raw里面放着数据库文件的网上例子
  3. tac rev cat命令使用范例
  4. 【独立游戏】黎明之刃——3D硬核ARPG游戏
  5. Spring.NET 学习总结
  6. Python打印格式化与字符串
  7. 百万个小油馕跨越3000公里来支援!西安加油!
  8. 贪心算法 0-1背包c语言,贪心算法0-1背包问题(算法实验代码).pdf
  9. easyui+ztree 后台管理系统模板
  10. 屏幕录像专家录制视频时不能全屏
  11. 如何使用 Pixelmator Pro调整照片,打印出最完美的照片效果?
  12. html5页面 学生作品,最完整长页面H5制作教程来啦!
  13. PDF文件如何添加页面或插入其他PDF页面
  14. 如何将“\”替换为任意字符
  15. ORacle空间数据
  16. java实现word文档的导出
  17. 制作自己的ip数据库
  18. JavaScript / Summary of Interview Questions
  19. 如何从pastebin粘贴一段代码到putt…
  20. Java实现将字符串进行Base64跟GZip结合解密 Java实现Base64 + GZIP解密处理并且输出明文字符

热门文章

  1. 搞懂JavaScript中的进制与进制转换
  2. 如何进入隔壁女生的。。。
  3. Java、使用循环语句打印4个图案
  4. 亚马逊新手卖家常犯的6个错误!—跨海汇
  5. Shell文件加解密
  6. PS教程:用PS调出复古暗蓝色湖景乡村风景照片
  7. 网上怎么打印带印章的文件
  8. 联想计算机功耗,如何查看CPU的消耗功率
  9. beego--session使用redis引擎
  10. 《大象:thinking in uml 》(第二版) 11章 系统分析 1-2节 确定系统用例、分析业务规则