我正在研究如何使用Kafka满足我们的需求,想知道消费者是否可以直接从生产者那里查询数据。根据我对Kafka的理解,一个人只能从一端生产,从另一端消费,但消费者无法与生产者进行互动交流。一定是另一种技术?比如储存在redis里?如果我可以自定义交换,rabbitmq是否提供此功能?
dsf9zpds1#
所以,我需要首先指出,“直接从生产者那里查询”和“与生产者交互交流”之间的区别首先,让我们将生产者定义为“产生消息的人”。同样,我们可以将消费者定义为“接收和处理消息的人”然后,采用这个定义,您会意识到,在任何实际的、真实的消息传递系统中,连接到消息传递系统的所有东西在某种程度上都是生产者和消费者。通常,您将特定服务设置为接受队列中的消息,然后生成一些结果消息并将其发布回代理,在代理中将其路由到适当的队列以供另一个(通常是最初生成的)服务使用。这种设置称为请求-响应。底线无法在rabbitmq下直接查询来自生产者的消息。生产者将消息放在交换台上,在交换台上消息被路由到一个或多个队列。消费者从队列中接收消息,而不必事先了解到底是谁生成了每条消息。可以向特定消息的生产者进行反馈。为此,原始生产者设置一个应答队列,这通常是一个随机命名的队列,一旦原始生产者收到应答并断开连接,该队列就会自动删除。这是许多设置之一。请看这个示例,以获取有关如何工作的详细信息。
1条答案
按热度按时间dsf9zpds1#
所以,我需要首先指出,“直接从生产者那里查询”和“与生产者交互交流”之间的区别
首先,让我们将生产者定义为“产生消息的人”。同样,我们可以将消费者定义为“接收和处理消息的人”
然后,采用这个定义,您会意识到,在任何实际的、真实的消息传递系统中,连接到消息传递系统的所有东西在某种程度上都是生产者和消费者。
通常,您将特定服务设置为接受队列中的消息,然后生成一些结果消息并将其发布回代理,在代理中将其路由到适当的队列以供另一个(通常是最初生成的)服务使用。这种设置称为请求-响应。
底线
无法在rabbitmq下直接查询来自生产者的消息。生产者将消息放在交换台上,在交换台上消息被路由到一个或多个队列。消费者从队列中接收消息,而不必事先了解到底是谁生成了每条消息。
可以向特定消息的生产者进行反馈。为此,原始生产者设置一个应答队列,这通常是一个随机命名的队列,一旦原始生产者收到应答并断开连接,该队列就会自动删除。这是许多设置之一。请看这个示例,以获取有关如何工作的详细信息。