当前位置: 首页 > 知识库问答 >
问题:

来自多个主题的消息顺序Kafka

花阳秋
2023-03-14

我正在开发一个使用Apache Kafka的软件。我有一个用户订阅了多个主题,我想知道是否有一个订单接收来自这些主题的消息。我在我的电脑上尝试了一些组合,但我需要确定这一点。例

    null

[编辑]我想指定这两个主题各有一个分区,并且只有一个生产者和一个消费者。我需要首先阅读来自第一个主题的所有消息,然后阅读来自另一个主题的消息

共有1个答案

樊运乾
2023-03-14

Kafka只保证消息在分区内排序。这意味着,即使只有一个主题但有多个分区,您也不能保证消息的接收顺序与发送顺序相同。

对于两个主题的用例,主题的订阅顺序和消息顺序之间没有关系,甚至因为如果集群有多个节点,主题分区领导者将位于不同的代理上,客户机通过不同的连接接收消息。顺便说一句,即使只有一个具有所有主题/分区的代理,您也不能得到所描述的保证。

 类似资料:
  • 我正在开发一个模块,它使用来自Kafka主题的消息并发布到下游系统。在下游系统不可用的情况下,消费者不确认Kakfa消息。因此,当我的消费者收到消息时,当下游系统不可用时,kakfa的偏移量将不会被提交。但是如果我在下游系统启动后收到新消息,并且当我确认该消息时,最新的偏移量将被提交,并且消费者永远不会收到主题中没有偏移量提交的那些消息。

  • 有人能帮我弄清楚这件事吗。 谢了!

  • 我需要来自不同Kafka主题的消费者消息, < li >我是否应该为每个主题创建不同的消费者实例,然后根据分区数量启动新的处理线程。或者 < li >我应该从单个消费者实例订阅所有主题,并且应该启动不同的处理线程 谢啦

  • 我有一个调查多个主题的消费者。对于这个问题,我限制了每个主题一个分区。假设当消费者开始轮询时,每个主题都有一些数据。阅读的顺序是什么? 是循环赛吗?它是从第一个读到下一个吗?我使用进行轮询。

  • 生产者发送消息到一个有四个分区的主题。我们有一个消费者在消费来自这个主题的消息。应用程序在工作日一直运行周末例外:它不会在周末期间调用poll方法。 使用者配置:自动提交,自动提交时间为5s(默认)。 应用程序一直运行良好,直到一个星期天,当它重新开始调用poll方法。我们看到有数百万条消息从这个话题中被轮询出来。消费者基本上是轮询来自主题的所有消息。将新的偏移量与它在周末停止之前的偏移量进行比较

  • 2016-07-05 03:59:25.042 O.A.S.D.Executor[INFO]正在处理-2元组的接收消息:源:__System:-1,流:__Tick,ID:{},[30] 2016-07-05 03:59:25.946 O.A.S.D.Executor[INFO]正在处理-2元组的接收消息:源:__System:-1,流:__Metrics_Tick,ID:{},[60] 我的测试