【问题标题】:Checkpointing position of a Consumer Group in Azure Event Hubs with AMQP使用 AMQP 在 Azure 事件中心检查消费者组的位置
【发布时间】:2018-04-14 03:14:00
【问题描述】:

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

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

我当前的连接代码(在附加消息侦听器之前)如下所示:

    final ConnectionFactory factory = new JmsConnectionFactory(uri);
    final Connection connection = factory.createConnection();
    connection.start();

    final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

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

【问题讨论】:

    标签: jms amqp azure-eventhub


    【解决方案1】:

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

    如果应用程序开发得当(因为很有可能故意回退),这应该不会导致功能问题,但它确实有可能非常浪费资源。最后,我决定使用 Microsoft 的 Java 事件中心客户端,它内置了检查点支持。

    我在我的 github 页面上的一些示例代码中勾勒了这一点,比较了 https://github.com/michaeljmcd/eventhub-qpid-examplehttps://github.com/michaeljmcd/eventhub-client-example

    【讨论】:

      猜你喜欢
      • 2016-01-18
      • 2020-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      相关资源
      最近更新 更多