RabbitMQ:Exchange的介绍和分析操作

1.声明

当前内容用于本人学习和分析,当前内容主要是Exchange的基本介绍

由于前面分析了AMQP协议,发现了其中的内容:消息发送者,exchange,bind,queue,消息消费者,由于生产者、消费者还有queue都是比较简单的,所以难点在于exchange和bind,这里主要讨论exchange

2.Exchange的主要作用

交换是发送消息的AMQP 0-9-1实体。交换接收一条消息并将其路由到零个或多个队列中。使用的路由算法取决于 交换类型和称为绑定的规则

主要作用:接收消息并通过路由算法实现分发消息到一个队列或者多个队列

3.Exchange的类型

在这里插入图片描述
基本的四个类型:Direct exchange|Fanout exchange|Topic exchange|Headers exchange

查看和对比ui界面
在这里插入图片描述
发现使用springboot常见的queue直接就是topic类型,直接使用的和默认创建的exchange就是topic类型

4.Exchange中的属性

在这里插入图片描述
从上面发现Exchange支持持久化?为什么不是消息持久化?可以配置名称和配置自动删除属性。可以配置特定的参数

对比ui界面
在这里插入图片描述
发现一个exchange可以配置的属性为:Name、Type、Durability、Auto delete、Internal、Argunments

发现通过ui添加时发现多了一个参数Internal

5.通过类方式查看Exchange

在这里插入图片描述
发现这个类中具有多个接口:Delcare(声明一般用于声明一个queue)、DeclareOk(表示声明成功的返回对象)、Delete(删除)、DeleteOk(表示删除成功返回的对象)、Bind(用于绑定exchange到queue的规则)、BindOk(表示路由绑定成功的返回对象)、Unbind(接触路由绑定)、UnbindOk(表示解除绑定成功的返回的对象)

查看其内部类Builder

 public static final class Builder
            {
                private int ticket = 0;
                private String exchange;
                private String type = "direct";
                private boolean passive = false;
                private boolean durable = false;
                private boolean autoDelete = false;
                private boolean internal = false;
                private boolean nowait = false;
                private Map<String,Object> arguments = null;
                 public Declare build() {
                    return new com.rabbitmq.client.impl.AMQImpl.Exchange.Declare(ticket, exchange, type, passive, durable, autoDelete, internal, nowait, arguments);
                }
            }

通过源码发现这个Exchange实际上就是通过Builder创建的,返回的实际类型为com.rabbitmq.client.impl.AMQImpl.Exchange

发现这个type实际上是用字符串方式实现,当前的arguments是map集合创建的,返回的结果为不可修改的map

6.总结

1.通过分析Exchange这个交换机发现其中具有可以持久化的属性,并且可以携带参数,带有自动删除属性

2.Exchange中具有四种类型

以上纯属个人见解,如有问题请联系本人!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值