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

如果Kafka用户订阅了多个主题,则接收消息的顺序

荆城
2023-03-14

我有一个调查多个主题的消费者。对于这个问题,我限制了每个主题一个分区。假设当消费者开始轮询时,每个主题都有一些数据。阅读的顺序是什么?

是循环赛吗?它是从第一个读到下一个吗?我使用consumer.poll(N)进行轮询。

共有1个答案

鲜于玮
2023-03-14

没有排序,因为基础协议允许在一个请求中发送对多个分区的请求。

当调用consumer.poll(N)时,客户机实际上会将FetchRequest对象发送到承载分区领导者的代理(请参见org.apache.kafka.clients.consumer.internals.fetcher.createFetchRequests())-每个节点只有一个请求,而不是每个分区。

重要的是,客户机可以为多个分区发送一个FetchRequest(参见协议规范)。

 类似资料:
  • 我正在开发一个使用的软件。我有一个用户订阅了多个主题,我想知道是否有一个订单接收来自这些主题的消息。我在我的电脑上尝试了一些组合,但我需要确定这一点。例 null [编辑]我想指定这两个主题各有一个分区,并且只有一个生产者和一个消费者。我需要首先阅读来自第一个主题的所有消息,然后阅读来自另一个主题的消息

  • 我正在使用azure service bus主题,我已经为它订阅启用了会话。 在my logic应用程序中,我使用来自主题的sql事务插入数据,我使用主题订阅(peek-lock)并在订阅服务器级别将并发设置为默认,如下所示 根据我的理解,我的逻辑应用程序(订阅者)应该读取所有的消息,并且必须在FIFO中处理 我的逻辑应用程序像

  • 我有以下代码 我的问题:当我添加多个主题订阅时(即上面的A,B,C),Kstream代码停止接收记录。 参考文献:https://kafka.apache.org/10/javadoc/org/apache/kafka/streams/StreamsBuilder.html 相关文件 我想实现的是:让一个Kstream(即上面的“源”)消耗/处理多个主题。

  • 我正在使用Spring stomp websocket框架向客户机发送订阅消息。我们使用ActiveMQ作为消息代理,并使用stomp javascript客户机。Spring 4.1.5和在此体系结构中,消息是通过以下方式发送的: 我只看到一个客户机接收到消息,而另一个没有。通过阅读Spring文档,我了解到这是默认的行为。谁能告诉我我做错了什么。 多谢了。

  • 消费者输出: 我对Kafka是新手,不知道我错过了什么来让它正确地工作。根据Kafka文档,消息的顺序是为我的用例保证的,所以一定有一些愚蠢的错误,我正在做,无法找出它。 除了Kafka,我还有别的选择吗? 谢谢

  • 我有以下用例: 我有两个Kafka主题,一个是用来处理传入消息流的,另一个是用来存储记录的,作为应用程序初始状态的引导。 有没有办法做到以下几点: 当应用程序启动时,读取Kafka主题中的所有消息,并将该主题中用于将应用程序引导至初始状态的所有存储在内存中 只有在读取了所有消息后,才允许处理流主题中的 因为在应用程序运行时,状态主题上可能会有其他记录,以便在不必重新启动应用程序的情况下将它们合并到