消息总线和消息队列理解
Message bus and Message queue understanding
我想知道我对消息总线和消息队列工作原理的理解是否正确。
首先,我需要明确命名,服务总线与消息总线可以互换使用吗?这是一种发布者-订阅者类型的系统,其中消息被添加到任意数量的发布者的消息集合中,并且任意数量的订阅者都可以从那里读取消息,到目前为止我是对的吗?
P1 --- /``````S1
\________ Service Bus Middleware ------+------ S2
/ MESSAGE-COLLECTION \______S3
P2 ---
我不明白的是
订阅者如何知道它对什么消息感兴趣,我的意思是它显然订阅了它,但是它如何知道它应该订阅哪些消息?,它在哪里看到消息列表,它如何使用它?通过 API 或如何 ?
订阅者如何接收消息?
何时从 MESSAGE-COLLECTION 中删除一条消息?我可以想象的是,为每条消息保留了一些计数器,该计数器代表订阅者总数,一旦一个订阅者成功处理了消息,订阅者总数就会减少。
消息队列也称为消息代理是一种推拉式系统。有任意数量的生产者和任意数量的消费者。每个生产者为每个消费者创建一个队列,并向其提供消息。
--- Message Queue 1 ---- C1
/
P1 ------ +
\
--- Message Queue 2 ---- C2
P2 ------ + --- Message Queue 1 ---- C1
由于是这种情况,一旦消费者成功处理消息,消息就会被删除。我的消息队列对其工作原理的理解是否正确?
另一个我不确定具体作用的概念是事件中心。
I would like to know if my understanding of Message Bus and Message Queue workings is correct.
一些comments/answers。这不会是全面的,因为许多方面都是特定于所使用的队列。
a service bus is used interchangeably with message bus?
没错。服务总线是面向服务解决方案中使用的消息总线基础设施,提供服务之间的后端数据传输机制。
It is a publisher-subscriber type of system where messages are added let's say to a message collection by any number of publishers and from where any number of subscribers can read
一般有两种型号:
Publish/Subscribe,发布者在没有特定目标的情况下将数据发送到总线。然后一个或多个订阅者可以使用该消息(或不使用,见下文)。
Request/Response,其中发送方将数据发送到总线,但期望特定的接收方处理消息和 return 响应。
how does a subscriber know what message it is interested in...?
大多数服务总线实现都使用路由键的概念。发送到总线的每个数据实体都附有一个密钥,订阅者随后可以根据该密钥进行过滤。
当然,订阅者也可以选择将所有消息发布到特定队列。
How does the subscriber receives the message ?
这因服务队列产品而异。例如,在 RabbitMQ 中,消息由 API 传递给订阅者,而在 Kafka 中,客户端必须定期轮询服务器以获取消息。
when is a message removed from MESSAGE-COLLECTION?
有时根本不会。这也因产品和配置而异。有时,一条消息只会传递给一个接收者,并在确认传递后被删除,但有时消息会留在总线上,直到它们根据时间戳过期。许多场景都是可能的。
我想知道我对消息总线和消息队列工作原理的理解是否正确。
首先,我需要明确命名,服务总线与消息总线可以互换使用吗?这是一种发布者-订阅者类型的系统,其中消息被添加到任意数量的发布者的消息集合中,并且任意数量的订阅者都可以从那里读取消息,到目前为止我是对的吗?
P1 --- /``````S1
\________ Service Bus Middleware ------+------ S2
/ MESSAGE-COLLECTION \______S3
P2 ---
我不明白的是
订阅者如何知道它对什么消息感兴趣,我的意思是它显然订阅了它,但是它如何知道它应该订阅哪些消息?,它在哪里看到消息列表,它如何使用它?通过 API 或如何 ?
订阅者如何接收消息?
何时从 MESSAGE-COLLECTION 中删除一条消息?我可以想象的是,为每条消息保留了一些计数器,该计数器代表订阅者总数,一旦一个订阅者成功处理了消息,订阅者总数就会减少。
消息队列也称为消息代理是一种推拉式系统。有任意数量的生产者和任意数量的消费者。每个生产者为每个消费者创建一个队列,并向其提供消息。
--- Message Queue 1 ---- C1
/
P1 ------ +
\
--- Message Queue 2 ---- C2
P2 ------ + --- Message Queue 1 ---- C1
由于是这种情况,一旦消费者成功处理消息,消息就会被删除。我的消息队列对其工作原理的理解是否正确?
另一个我不确定具体作用的概念是事件中心。
I would like to know if my understanding of Message Bus and Message Queue workings is correct.
一些comments/answers。这不会是全面的,因为许多方面都是特定于所使用的队列。
a service bus is used interchangeably with message bus?
没错。服务总线是面向服务解决方案中使用的消息总线基础设施,提供服务之间的后端数据传输机制。
It is a publisher-subscriber type of system where messages are added let's say to a message collection by any number of publishers and from where any number of subscribers can read
一般有两种型号:
Publish/Subscribe,发布者在没有特定目标的情况下将数据发送到总线。然后一个或多个订阅者可以使用该消息(或不使用,见下文)。
Request/Response,其中发送方将数据发送到总线,但期望特定的接收方处理消息和 return 响应。
how does a subscriber know what message it is interested in...?
大多数服务总线实现都使用路由键的概念。发送到总线的每个数据实体都附有一个密钥,订阅者随后可以根据该密钥进行过滤。
当然,订阅者也可以选择将所有消息发布到特定队列。
How does the subscriber receives the message ?
这因服务队列产品而异。例如,在 RabbitMQ 中,消息由 API 传递给订阅者,而在 Kafka 中,客户端必须定期轮询服务器以获取消息。
when is a message removed from MESSAGE-COLLECTION?
有时根本不会。这也因产品和配置而异。有时,一条消息只会传递给一个接收者,并在确认传递后被删除,但有时消息会留在总线上,直到它们根据时间戳过期。许多场景都是可能的。