RabbitMQ知识体系
2024-06-07 20:08:15 0 举报
AI智能生成
RabbitMQ知识体系
作者其他创作
大纲/内容
若为true,则当交换器无法根据自身的类型和路由键找到一个符合条件的队列,那么rabbitmq 会调用basic.Return命令将消息返回给生产者
若为false,则当出现上述情形时消息会直接被丢弃
mandatory
ReturnListener 可获取到没有被正确路由到合适队列的消息
immediate
生产者在发送消息的时候如果不设置 mandatory 参数, 那么消息在未被路由的情况下将会丢失: 如果设置了 mandatory 参数,那么需要添加 ReturnListener 的编程逻辑,生产者的代码将变得复杂。如果既不想复杂化生产者的编程逻辑,又不想消息丢失,那么可以使用备份交换器, 这样可以将未被路由的消息存储在 RabbitMQ 中,再在需要的时候去处理这些消息。
若备份交换器没有绑定任何队列或没有任何匹配的队列,客户端和 RabbitMQ 服务端都不会有异常出现,此时消息会丢失。
若备份交换器和 mandatory 参数一起使用,那么 mandatory 参数无效。
alternate-exchange
重要参数
广播模式,一个发送到交换机的消息会被转发到与该交换机绑定的所有队列上
fanout
将消息路由到那些RoutingKey与BindingKey完全匹配的队列中
direct
模糊匹配模式,以“.”作为分隔符,可存在两种特殊字符串 * #*匹配一个单词,#匹配任意多个单词
topic
不依赖RoutingKey做路由匹配,而是根据消息内容中的headers属性进行匹配
headers
交换器类型
使用Erlang语言开发,该语言最初用于交换机领域,其有着与原生socket一样的延迟
高性能
特性
Server: 又称Broker,接受客户端连接,实现AMQP实体服务
Connection: 应用程序与Broker的网络连接
多线程间共享channel存在线程安全问题
Channel: 网络管道,几乎所有的操作都在channel中进行,是消息进行读写的通道。客户端可建立多个channel,每个channel代表一个会话任务
Message: 消息
Virtual host: 虚拟主机,用于进行逻辑隔离,最上层的消息路由。一个Virtual host可以有若干个Exchange及Queue,同一个virtual host里面不能有相同名称的exchange或queue
Exchange 交换机,接收消息,根据路由键转发消息到绑定的队列
Binding :Exchange与Queue之间的虚拟连接,binding可以包含routing key
Routing key:一个路由规则,虚拟机可用它来确定如何路由一个特定消息
Queue:消息队列
位于协议最高层,主要定义了一些供客户端调用的命令
Module Layer
位于中间层,主要负责将客户端的命令发送给服务器,再将服务端的应答返回给客户端,主要为客户端与服务器之间的通信提供可靠性同步机制及错误处理
Session Layer
位于最底层,主要传输二进制数据流,提供帧的处理,信道复用,错误检测和数据表示等
Transport Layer
协议
AMQP核心概念
消息体payload
标签 Lable
消息结构
TTL(Time To Live)
消息参数
消息
RabbitMQ
0 条评论
回复 删除
下一页