经纪人和交易所之间的区别

Difference between broker and exchange

我是 RabbitMQ 的新手,正在尝试弄清楚经纪人和交易所之间的区别。

根据我的阅读,这些术语似乎几乎可以互换使用,并且在图中,代理似乎包含交换和队列。

来自 "RabbitMQ Succinctly" 本书:

Exchanges are AMQP entities where messages are sent to the message broker. Exchanges take a message and then route it to one or more queues

那么什么是经纪人?在 RabbitMQ 管理中有一个 "Exchanges" 的选项卡,但没有用于代理的选项卡。我可以直接与经纪人互动还是只能由交易所进行?

"Broker" 是 RabbitMQ 消息系统类型的通用术语。它是一个集中式消息传递系统,具有处理消息路由和传递等的服务器。

ZeroMQ 的这篇论文很好地理解了 brokered 和 brokerless 之间的区别:http://zeromq.org/whitepapers:brokerless(虽然这篇论文相当偏向于 brokerless 模型,但两者都很好并且都有用。我倾向于更喜欢 rabbitmq /代理系统,但并非总是如此)

从另一个角度来看,这是 RabbitMQ 的代理与无代理 post:https://www.rabbitmq.com/blog/2010/09/22/broker-vs-brokerless/

在大多数情况下,当您看到作品时,只需将 "rabbitmq server" 替换为您的想法 "broker" 就可以了。

交换,正如您所指出的,是您在 RabbitMQ 中发布消息的东西。它根据交换类型处理消息的绑定和路由。

经纪人站在生产者和消费者之间。

这里是 post-office 的类比,无需深入细节即可理解 Rabbitmq-based 消息传递系统中的组件。

交易所就像一个parcel-delivery人。 A queue 是包裹的收件人。生产者是包裹的发件人。交换将包裹(即消息)递送到 queue 所遵循的一组规则称为“绑定”。路由键 and/or 和 header 就像包裹上的地址。交换根据路由 key/header 确定消息发送到哪个 queue。生产者将消息发送到交换器,而不是 queue.

接受来自生产者的消息并将它们传递给消费者的整个业务就是“经纪人”所做的。

Rabbitmq 是 AMQP 协议(​​application-layer 协议)的实现,它是一个异步 message-brokerage 中间件。