架构模型如下: 名词解释
- Broker:rabbitmq服务
- Virtual Host:虚拟主机,用于进行逻辑隔离(相当于mysql中的schema),一个Virtual Host可以包含多个不同的exchange和queue(名称不一样)
新增virtual Host
- 管理页面添加
- 命令添加
rabbitmqctl add_vhost vhostpath
-
Exchange:交换机,生产者将消息发送到交换机,交换机根据路由key,将消息分发到对应的queue(队列)。 -
Queue:用来存贮消息,每个队列都会绑定至少一个交换机,若没有指定,则绑定默认交换机。 -
Binding:绑定,消息队列需要将交换机和队列绑定,一般指定routingKey,来确定消息需要路由的队列。 -
routingKey:消息的路由规则。
交换机模式
exchange属性
- Name: 名称
- Type:类型(Direct、Topic、Fanout、Headers)
- Durability:是否持久化,重启后是否依然存在,true为持久化
- Auto Delete:是否自动删除,所有队列都删除后,该交换机是否自动删除
- Internal:当前Exchange是否用于RabbitMQ内部使用,默认为false
- Argument:扩展参数,用于扩展AMQP协议自制定化使用
类型(Direct、Topic、Fanout、Headers)
Direct(直连交换机)
消息被转发到 RoutingKey 中指定的 Queue。
Topic(主题交换机)
交换机将消息的routingKey和队列的bindkey进行模糊匹配,将消息转发到符合规则的queue。所以该模式下,队列需要绑定一个topic。
可以使用通配符进行模糊匹配
“#” 匹配零个或多个词 ,"*" 匹配一个词
“log.#” 能够匹配到 “log.info.oa” ,“log.*” 能够匹配到 “log.erro”
Fanout(广播交换机)
将消息发送到与该交换的绑定的所有队列中
|