小编nat*_*ane的帖子

为什么在 Apache Pulsar 中使用 MessageListeners 而不仅仅是 Consumer.receive()?

Apache Pulsar 的 API ( https://pulsar.apache.org/api/client/org/apache/pulsar/client/api/Consumer.html ) 包括至少两种从 Pulsar 主题/队列消费消息的方法:

  1. 使用 Consumer.receive()(或 Consumer.receiveAsync())
  2. 使用 ConsumerBuilder.messageListener(MessageListener messageListener) 添加消息侦听器,将 Consumer 和 Message 的引用发送到 MessageListener 的实例

大多数情况下,感觉这些都是平等的,并且使用 MessageListener 的类似事件的方法是有意义的,除了 Consumer 对象具有我发现在受控 while 循环中可能有用的其他方法,例如: isConnected() 、receiveAsync()、pause()、resume() 和seek(MessageId messageId)。

有了 Consumer 类中的这些附加功能,即使将 Consumer 传递到 MessageListener 中,为什么不为消费者提供一个简单的循环,而不是使用单个 MessageListener?

在 Pulsar 中使用 MessageListener 是否有优势或偏好,或者这只是给开发人员的一个选项?

过去,我主要为 JMS 和 Kafka 编写消费者循环。

java apache-pulsar

5
推荐指数
1
解决办法
1081
查看次数

标签 统计

apache-pulsar ×1

java ×1