Dirtct交换器,即发布与订阅模式,匹配规则为完全匹配。

 

一、Provideer

配置文件

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

代码

 @Component
public class Sender {
@Autowired
private AmqpTemplate amqpTemplate; @Value("${mq.config.exchange}")
private String exchange; @Value("${mq.config.queue.error.routing.key}")
private String routingkey; public void send(String msg) {
this.amqpTemplate.convertAndSend(this.exchange, this.routingkey, msg);
}
}

二、consumer

配置文件

 spring.application.name=consumer
spring.rabbitmq.host=192.168.50.30
spring.rabbitmq.port=5672
spring.rabbitmq.username=rabbit
spring.rabbitmq.password=rabbit
#设置交换器名称
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.queqe.error=log.error
#errot路由键
mq.config.queue.error.routing.key=log.error.routing.key

1,InfoReceiver

 /*
@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 Consumer {
@RabbitHandler
public void process(String msg) {
System.out.println("info received:" + msg);
}
}

2,ErrorReceiver

 /*
@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 {
public void process(String msg) {
System.out.println("error recevied:" + msg);
}
}

RabbitMQ之Direct交换器模式开发的更多相关文章

  1. RabbitMQ之Fanout交换器模式开发

    Fanout模式,即广播模式,一个发送到交换机的消息会被转发到与该交换机绑定的所有队列上. 一.Provider 配置文件 spring.application.name=provider sprin ...

  2. RabbitMQ之Topic交换器模式开发

    Topic交换器,即主题模式,进行规则匹配. 一.Provider 配置文件 spring.application.name=provider spring.rabbitmq.host=192.168 ...

  3. spring boot整合RabbitMQ(Direct模式)

    springboot集成RabbitMQ非常简单,如果只是简单的使用配置非常少,springboot提供了spring-boot-starter-amqp项目对消息各种支持. Direct Excha ...

  4. C#使用RabbitMq队列(Sample,Work,Fanout,Direct等模式的简单使用)

    1:RabbitMQ是个啥?(专业术语参考自网络) RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件). RabbitMQ服务器是用Erlang语言编写的, ...

  5. PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (一) -- 安装 AMQP 扩展和 Direct Exchange 模式

    Windows 安装 amqp 扩展 RabbitMQ 是基于 amqp(高级消息队列协议) 协议的.使用 RabbitMQ 前必须为 PHP 安装相应的 amqp 扩展. 下载相应版本的 amqp ...

  6. 8、RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较

    RabbitMQ三种Exchange模式(fanout,direct,topic)的性能比较 RabbitMQ中,除了Simple Queue和Work Queue之外的所有生产者提交的消息都由Exc ...

  7. RabbitMQ详解(三)------RabbitMQ的五种模式

    RabbitMQ详解(三)------RabbitMQ的五种模式 1.简单队列(模式) 上一篇文章末尾的实例给出的代码就是简单模式. 一个生产者对应一个消费者!!! pom.xml ​ 必须导入Rab ...

  8. SpringBoot应用操作Rabbitmq(direct高级操作)

    一.首先声明完成任务架构,通过direct订阅/发布的模式进行生产消费. a.消息生产指定交换器和路由key b.消费者绑定交换器,路由key和队列的关系(集群监控收到的消息不重复) 二.实战演练 1 ...

  9. 手把手一起入门 RabbitMQ 的六大使用模式(Java 客户端)

    原文地址:手把手一起入门 RabbitMQ 的六大使用模式(Java 客户端) 为什么使用 MQ? 在这里我就不多说了,无非就是削峰.解耦和异步.这里没有很多关于 MQ 的理论和概念,只想手把手带你一 ...

随机推荐

  1. OSS阿里云相关文档

    OSS阿里云相关文档 oss文档链接

  2. JSON空值处理与 StringUtils工具类使用

    JSON 动态查询时,需要的条件本应是null,前端传入的是" " //null转换为"" private static ValueFilter filter ...

  3. 小程序框架之视图层 View~获取界面节点信息

    获取界面上的节点信息 WXML节点信息 节点信息查询 API 可以用于获取节点属性.样式.在界面上的位置等信息. 最常见的用法是使用这个接口来查询某个节点的当前位置,以及界面的滚动位置. 示例代码: ...

  4. 《The One!团队》第八次作业:ALPHA冲刺(三)

    项目 内容 作业所属课程 所属课程 作业要求 作业要求 团队名称 < The One !> 作业学习目标 (1)掌握软件测试基础技术.(2)学习迭代式增量软件开发过程(Scrum) 第三天 ...

  5. 应该知道的linux命令

    常用命令 1.在compose Bar下可以对多个服务器同时进行操作.选择To All Sessions 2. 查看JAVA进程: ps -ef | grep java ps auxf | grep ...

  6. 依赖注入(DI)和控制反转(IOC)

    学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...

  7. 错误信息: The server cannot or will not process the request due to something that is perceived to be a client error

    错误原因:在提交的表单中有 date 类型的数据,也就是不能传输日期类型的数据. 嗯!我知道,去吧!

  8. 鼠标经过盒子出现边框(伪元素,定位,css3盒子模型)

    <body> <div> <img src="mi6.png" > </div> </body> div{ width: ...

  9. RookeyFrame 隐藏 首次加载菜单 的伸缩动画

    一进入系统,然后点击菜单“系统管理”,会看到展开的“系统设置”菜单,又缩回去了,每次都会有(处女座看到就想改). 隐藏这个动画的JS:jquery.easyui.min.js,这个JS里面有个方法“_ ...

  10. PHP获取POST数据的三种方式

    一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname']; 说明:只能接收Content-Type: application/x-www-form-urle ...