RabbitMQ-学习日志

发布于:2023-01-04 ⋅ 阅读:(276) ⋅ 点赞:(0)

 官方网站

Messaging that just works — RabbitMQhttps://www.rabbitmq.com

目录

MQ简介

ReabbitMQ简介


MQ简介

MQ:全程Massage Queue(消息队列)在消息传输过程中用来保存消息的容器,多用于分布式系统之间通信

MQ的优势和劣势

优势:应用解耦、异步提速、削峰填谷

劣势:系统可用性降低、系统复杂性提高、一致性问题

使用MQ需要满足什么条件?

  • 生产者不需要从消费者中获取反馈,引入消息列队之前直接调用,其接口的返回值应该为空,这才让明明下层的动作还没做,上层却当成已经做过了继续往后走,既所谓异步成为可能。
  • 容许短暂性不一致
  • 使用MQ要比不使用成本低。

常见的MQ

RabbitMQ、RocketMQ,ActiveMQ、Kafka、ZeroMQ、MetaMQ等,也有使用Redis充当消息队列的。

ReabbitMQ简介

 AMQP,既Advanced Message Queuing Potocal(高级消息队列协议),是一个网络协议。是应用层的一个开放标准,为面向消息中间件设计的。基于此协议的消息中间件与客户端可传递信息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。

Rabbit MQ基础结构图

 Rabbit MQ中的相关概念:

  • Broker:接受和分发消息的应用。Rabbit Server就是Message Broker。
  • Virtual host:出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟的分组中。类似网络中的namespace概念。当多个不同的用户使用同一个Rabbit Server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchang/queue等。
  • Connection:publisher/consumer和broker之间TCP连接。
  • Channel:如果每访问一次Rabbit MQ都建立一个Connection,在消息量大的时候建立TCP Connection的开销将是巨大的,效率也低。Channel是在Connection内部建立的逻辑连接,如果应用程序支持多线程,通常每个thread创建单独的channel进行通讯,AMQP method包含了channel id帮助客户端和message broker识别channel,所以channel之间是完全隔离的。channel作为轻量级的Connection极大减少了操作系统建立TCP Connection的开销。
  • Exchange:Message到达broker的第一站,根据分发规则,匹配查询表中的routing key,分发消息到queue中去。常用的类型有:direct(point-to-point),topic(publisher-subscribe) and fanout(multicast)
  • Queue:消息最终送到这里等待consumer取走。
  • Binding:exchange和queue之间的虚拟连接,binding中可以包含routing key。Binding信息被保存到exchange中的查询表中,用于message的分发依据。

Rabbit MQ提供了6种工作模式:

简单模式、work queue、Publish/Subscribe发布与订阅模式、Routing路由模式、Topics主题模式、RPC远程调用模式。

JMS

Java消息服务(JavaMessage Service)应用程序接口,是Java平台面向消息中间件的API。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到