多个消费者是否可以在 Pulsar 主题上消费相同的消息?
Is it possible for Multiple Consumers to consume same message on a Pulsar Topic?
假设有一个用于持久主题的 Pulsar Producer topic1
(命名空间和租户与问题无关)。
假设我们有多个使用不同订阅名称的相同主题 (topic1
) 的消费者。
是否可以配置消费者接收相同的消息?因此,例如,如果将消息 msg1
发送到主题,consumer1
和 consumer2
都会收到此消息吗?
消费者和生产者都是用Java编写的,但编程语言并不重要。
澄清
对于具有多个订阅的同一主题的多个订阅观察到的当前行为是,每个订阅者都不会收到已发布到该主题的所有消息。我需要接收来自该主题的所有消息。
是的。多个消费者可以从一个主题接收相同的消息副本。订阅决定了消息如何传递给消费者。您需要的是每个消费者都有自己的 Exclusive
订阅。这是 Java.
中的代码示例
String topicName = "your-tenant/namespace/topic1"
Consumer consumer1 = client.newConsumer()
.topic(topicName)
.subscriptionName("my-subscription1")
.subscriptionInitialPosition(SubscriptionInitialPosition.Earliest)
.subscriptionType(SubscriptionType.Exclusive)
.subscribe();
// create another consumer
Consumer consumer2 = client.newConsumer()
.topic(topicName)
.subscriptionName("my-subscription2")
.subscriptionInitialPosition(SubscriptionInitialPosition.Earliest)
.subscriptionType(SubscriptionType.Exclusive)
.subscribe();
// two consumers receive messages in alternate from the same topic
while (true) {
Message msgFromConsumer1 = consumer1.receive();
Message msgFromConsumer2 = consumer2.receive();
}
是的,您只需要对该主题使用多个订阅。
我写了一篇关于这个主题的博客 post:"Subscriptions: Multiple Groups of Consumers on a Pulsar Topic"。
假设有一个用于持久主题的 Pulsar Producer topic1
(命名空间和租户与问题无关)。
假设我们有多个使用不同订阅名称的相同主题 (topic1
) 的消费者。
是否可以配置消费者接收相同的消息?因此,例如,如果将消息 msg1
发送到主题,consumer1
和 consumer2
都会收到此消息吗?
消费者和生产者都是用Java编写的,但编程语言并不重要。
澄清
对于具有多个订阅的同一主题的多个订阅观察到的当前行为是,每个订阅者都不会收到已发布到该主题的所有消息。我需要接收来自该主题的所有消息。
是的。多个消费者可以从一个主题接收相同的消息副本。订阅决定了消息如何传递给消费者。您需要的是每个消费者都有自己的 Exclusive
订阅。这是 Java.
String topicName = "your-tenant/namespace/topic1"
Consumer consumer1 = client.newConsumer()
.topic(topicName)
.subscriptionName("my-subscription1")
.subscriptionInitialPosition(SubscriptionInitialPosition.Earliest)
.subscriptionType(SubscriptionType.Exclusive)
.subscribe();
// create another consumer
Consumer consumer2 = client.newConsumer()
.topic(topicName)
.subscriptionName("my-subscription2")
.subscriptionInitialPosition(SubscriptionInitialPosition.Earliest)
.subscriptionType(SubscriptionType.Exclusive)
.subscribe();
// two consumers receive messages in alternate from the same topic
while (true) {
Message msgFromConsumer1 = consumer1.receive();
Message msgFromConsumer2 = consumer2.receive();
}
是的,您只需要对该主题使用多个订阅。
我写了一篇关于这个主题的博客 post:"Subscriptions: Multiple Groups of Consumers on a Pulsar Topic"。