nat*_*ane 5 java apache-pulsar
Apache Pulsar 的 API ( https://pulsar.apache.org/api/client/org/apache/pulsar/client/api/Consumer.html ) 包括至少两种从 Pulsar 主题/队列消费消息的方法:
大多数情况下,感觉这些都是平等的,并且使用 MessageListener 的类似事件的方法是有意义的,除了 Consumer 对象具有我发现在受控 while 循环中可能有用的其他方法,例如: isConnected() 、receiveAsync()、pause()、resume() 和seek(MessageId messageId)。
有了 Consumer 类中的这些附加功能,即使将 Consumer 传递到 MessageListener 中,为什么不为消费者提供一个简单的循环,而不是使用单个 MessageListener?
在 Pulsar 中使用 MessageListener 是否有优势或偏好,或者这只是给开发人员的一个选项?
过去,我主要为 JMS 和 Kafka 编写消费者循环。
监听器模式通常是一种更好的 OOP 设计。它使代码更加简洁,最重要的是它很好地应用了 SOLID 原则。
基本上,您需要根据每条消息执行业务逻辑,并管理消费者/读取器基础设施(如线程模型)。Java 事件监听器模式是分离业务逻辑和管理线程的答案。业务逻辑在侦听器类中实现。addListener(theClass)它可以随着消费者/读者的创建而添加一行。它干净得多。
使用 addListener,仍然可以选择在同一类/文件中添加具有业务逻辑的 lambda 函数。我认为这是为了简单的处理需求。
在 Pulsar 客户端的特定情况下,客户端 API在技术上可以为您管理侦听器线程。这是另一个好处。