RabbitMQ的模型和基本概念

对RabbitMQ的模型的理解和简单的概念总结

RabbitMQ模型如下:

96388546.jpg (687×306)

生产者发出一些消息(包含消息头和消息体),消息头是透明的,消息体是不透明的,可以在消息头里面指定routing-key来间接规定绑定规则。生产者将生产出来的消息发送到交换机上面去,交换机则会把消息分配到对应的消息队列中去,等待消费者的消费。

如果很多个消费者绑定了同一个消息队列,那么有消息发送到消息队列时,只能有一个消费者接收到该消息,其他的消费者接收不到,避免了同一消息被重复消费,所以RabbitMQ不支持队列层面上的广播消费(可以通过交换机来完成)

交换机通过BindingKey来与消息队列绑定在一起,当消息进入交换机的时候,会因为交换机的种类不同而产生不同的行为

交换机主要种类如下:

  • fanout

交换机会将消息直接发送到所有与他绑定了的队列中,不做任何判断

  • direct

交换机将消息发送到那些BindingKey与RoutingKey完全匹配的队列中

  • topic

与direct类似,不过支持BindingKey和RoutingKey的模糊匹配,#匹配0或多个单词,*匹配一个单词。

单词的概念:被点(.)分割的为一个单词

如cn.luckycurve.*可以与cn.luckycurve.rabbitmq匹配上

  • headers (不推荐)

如果消息没有被任何交换机接收,那么该消息会被丢弃或者返回给生产者(需要配置mandatory参数)

RabbitMQ的安装——选择带Management的版本去安装

docker pull rabbitmq:3.7.24-management

docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq babd922fd7bc

账号:guest 密码:guest

记得第一次登陆15672的管理界面一定要删除guest用户(如果你的ip暴露在公网上的话)

发布了23 篇原创文章 · 获赞 13 · 访问量 1340

猜你喜欢

转载自blog.csdn.net/LuckyCurve/article/details/104534265