我是RabbitMQ的新手。在RabbitMQ中,一旦消息被消费者使用,它仍然可以在队列中使用吗?来自特定队列的单个消息是否可以被多个消费者使用?与消息存储在文件系统中的Kafka不同,它是如何存储在RabbitMq中的?
答案 0 :(得分:3)
多个消费者可以使用来自特定队列的单个消息吗?
是的,非常有可能,您可以使用扇出交换存档。有各种类型的交易所。
直接:一对一,一旦传递给消费者,消息就会消失,您可以手动或自动处理确认模式。直接交换基于消息路由密钥将消息传递到队列。
扇出:多个侦听器可以恢复一个到多个消息。扇出交换将消息路由到绑定到它的所有队列,并忽略路由密钥
主题:主题根据消息路由键与用于将队列绑定到交换机的模式之间的匹配,将消息路由到一个或多个队列
有关Exchange here的更多信息:
与Kafka不同,消息存储在文件系统中,它是如何存储在RabbitMq中的?
默认情况下,RabbitMQ会将消息存储在内存中,如果您愿意,可以根据您的要求启用消息persistence和HA Polity(用于镜像)作为可选配置。然而,它会带来性能成本,它会通过限制来降低吞吐量(涉及I / O操作)。