rabbitmq - 简单认识
1. 概述
-
与 rabbitmq 做交互
- amqp 最著名的实现
-
与 jms 最明显的区别
- 消息
- 不是去找 queue
- 而是去找 exchange
- 消息
2. rabbitmq
-
基本组件
- sender
- 发送者
- receiver
- 接收者
- 从 queue 里接受消息
- 接收者
- broker
- 概述
- 队列服务器, 中间件
- 组件
- exchange
- 作用
- 接受 消息
- 转发消息
- 作用
- binding
- 貌似是 queue 的一个属性
- queue
- 存放消息, 等待消费
- exchange
- 概述
- sender
-
与 jms 的区别
-
jms
- 分发
- 直接将消息分发到 queue
- 消息
- 携带着 目的地址
- 分发
-
rabbitmq
- 分发
- 有着相对复杂的规则
- 规则根据 exchange 和 消息携带的信息, 进行转发
- 消息
- 不携带 目的 queue
- 携带的是 routing key
- 分发
-
-
消息的活动路径
- 略
-
exchange 简述
- default
- 默认创建
- 知道 broker 里所有的 queue
- 转发
- 找到 消息里 routing key
- 找到 queue 名称
- 如果相同, 就发过去
- direct
- 类似 default
- 这次比对的, 是 消息的 routing key 和 queue 的 bingding key
- 类似 default
- topic
- 类似 direct
- 不过区别是, 转发的次数, 可能会有很多
- 支持 binding key 正则匹配
- 不过区别是, 转发的次数, 可能会有很多
- 类似 direct
- fanout
- @所有人
- header
- 类似 topic
- 不过这次的判定依据, 是 消息的 header 与 binding key
- 类似 topic
- dead letter
- 类似 java 的 catch
- 转发那些有问题的消息
- 类似 java 的 catch
- default
-
我的认识
-
message
-
属性
- header
- 内容
- 发送时指定
- routing key
- exchange
-
jms
- jms 的消息, 貌似没有这么多属性
- 地址 都是在发送时候由 template 指定的
- 不过连接字符串倒是已经配好了的
-
-
queue
- 属性
- name
- binding key
- queue
- 属性
-
消息的路径
- 使用特定的 假设有个 template 与 broker 通信
- 感觉通常 一个 template 对应 一个 broker
- 一个 broker 对应一个 exchange
- 到了 exchange 后, 与 规则匹配, 然后转发
- 使用特定的 假设有个 template 与 broker 通信
-
尽量尝试解释清楚; 自己校对能力有限, 如果有错误欢迎指出