多个消费者是否可以在 Pulsar 主题上消费相同的消息?

Is it possible for Multiple Consumers to consume same message on a Pulsar Topic?

假设有一个用于持久主题的 Pulsar Producer topic1(命名空间和租户与问题无关)。

假设我们有多个使用不同订阅名称的相同主题 (topic1) 的消费者。

是否可以配置消费者接收相同的消息?因此,例如,如果将消息 msg1 发送到主题,consumer1consumer2 都会收到此消息吗?

消费者和生产者都是用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"