使用AMQP检查Azure事件中心中的使用者组的位置

时间:2017-11-01 18:01:54

标签: jms amqp azure-eventhub

我正在开发一些代码来使用AMQP和Apache Qpid库处理Azure事件中心的事件。我注意到的一件事是,当我的应用程序重新启动时,将从使用者组/分区重新读取所有消息。

我的假设是我的消费者不是应该检查点(基于https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-features#event-consumers),但我不确定在JMS使用者身上需要设置哪些选项才能执行此操作。

我当前的连接代码(在附加消息侦听器之前)看起来像这样:

logging_level

在URL选项方面我需要做些什么来导致检查点发生?

1 个答案:

答案 0 :(得分:0)

这个问题的简短答案是AMQP没有内置检查点的概念,因此,JMS也没有。这样的结果是,每次启动通过AMQP读取的应用程序时,它将从事件流的开头开始读取并重新处理所有内容。

如果应用程序开发正确(因为很有可能会进行有意倒带),则这不会引起功能问题,但确实有可能非常浪费资源。最后,我决定使用Microsoft的Java事件中心客户端,该客户端内置了检查点支持。

我在github页面上的一些示例代码中对此进行了概述,比较了https://github.com/michaeljmcd/eventhub-qpid-examplehttps://github.com/michaeljmcd/eventhub-client-example