4---说说我们离不开的消息队列

Posted on 2022-07-05 14:09  写程序到老  阅读(13)  评论(0编辑  收藏  举报

消息队列:信息从一个应用程序传递给另一个应用程序,像总线一样,只不过是软件总线。把消息放到队列一直不会消失,直到消费者取走。

主流:RabbitMQ  Kafka  RocketMQ

这一篇重点来学习 RabbitMQ  官网:https://www.rabbitmq.com/

RabbitMQ Erlang语言开发 开源

RabbitMQ支持多种协议,核心协议是 AMQP 明白核心协议基本也就理解了RabbitMQ

AMQP:二进制协议:这个协议是这样的:broker-代理,这里包括两个大块,一个是接收消息的exchange 一个是queue.

exchange呢接收消息,然后把副本按路由给queue。那代理怎么把消息给消费者呢,消费者就是使用消息或者处理消息的应用,

两种方式,一种是推,一种是拉。要么代理把消息按订阅推给消息者,一种是消息者自己拉消息或者叫自己按需取消息。大概就是这个过程:

一个应用生产消息----代理----一个应用使用消息 或者叫消费消息 或者叫处理消息

交换机的分类

1:直连交换机:很好理解  路由的K就是队列的名字  带着队列名字的消息到达交换机 那交换机直接发送到对应的队列就好了。

2:扇形交换机:所有绑定到此交换机的队列都可以收到消息,消息广播路由。我们常用的就是分页式系统可以使用这种方式来广播配置状态更新。

3:主题交换机:使用路由,队列绑定到交换机时候配置的routing key  可以设置模糊匹配以点‘.’,分隔* 或者#  。当有消息来的时候 匹配上的队列会收到相应的消息

4:头交换机:类似于直连,又区别于直连。直连路由k只支持字串,请求头信息没有这个约束 可以使用数字 字典  可以用于路由键不必是字串的直连交换机。

 队列:

注意:1:起名:amq开头的队列名给Broker内部使用 2:持久化  设置交换机持久化,设置队列持久化 也要设置消息持久化 3:推荐订阅消息

消息确认 删除:Broker发完就删   消费者说删再删

还有一种叫拒绝消息:注意死循环 一个消费者 不停的拒绝要求重发

AMQP tcp可靠传输   可设置多通道使用同一tcp连接

参考:https://www.cnblogs.com/arthinking/p/15422958.html

Copyright © 2024 写程序到老
Powered by .NET 8.0 on Kubernetes