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

单个Kafka生产者可以为多个主题生成消息吗?如何生成?

阚吕恭
2023-03-14

我只是在探索Kafka,目前我正在使用One生产者

我在阅读Kafka页面,新的生产者API是线程安全的,共享单个实例将提高性能。

这是否意味着我可以使用单个生产者向多个主题发布消息?


共有2个答案

董昕
2023-03-14

如果我没理解错的话,您更倾向于使用同一个生产者实例来发送关于多个主题的相同/多个消息。

不确定 Java,但在这里你可以使用Kafka .NET 客户端依赖生成器在 C#(.NET) 中执行此操作

   using (var producer = new ProducerBuilder<string, string>(config).Build())
        using (var producer2 = new DependentProducerBuilder<Null, int>(producer.Handle).Build())
        {
            producer.ProduceAsync("first-topic", new Message<string, string> { Key = "my-key-value", Value = "my-value" });

            producer2.ProduceAsync("second-topic", new Message<Null, int> { Value = 42 });

            producer2.ProduceAsync("first-topic", new Message<Null, int> { Value = 107 });

            producer.Flush(TimeSpan.FromSeconds(10));
        }
储思聪
2023-03-14

我自己从来没有试过,但我想你可以。因为生产商和发送记录的代码是(从这里开始https://kafka.apache.org/090/javadoc/index.html?org/apache/kafka/clients/producer/KafkaProducer.html):

Producer<String, String> producer = new KafkaProducer<>(props);
 for(int i = 0; i < 100; i++)
     producer.send(new ProducerRecord<String, String>("my-topic", Integer.toString(i), Integer.toString(i)));

所以,我想,如果你只是在ProducerRecords中编写不同的主题,那应该是可能的。

此外,这里http://kafka.apache.org/081/documentation.html#producerapi它明确表示您可以使用方法发送(List

 类似资料:
  • 我有一个使用ActiveMQ的消息队列。web请求用persistency=true将消息放入队列。现在,我有两个消费者,它们都作为单独的会话连接到这个队列。使用者1总是确认消息,但使用者2从不这样做。 JMS队列实现负载平衡器语义。一条消息将被一个使用者接收。如果在发送消息时没有可用的使用者,它将被保留,直到有可以处理消息的使用者可用为止。如果使用者接收到一条消息,但在关闭之前没有确认它,那么该

  • 这是一个一般性问题,因为它不仅适用于我的场景(使用Azure服务总线),而且适用于带有事件的发布/订阅服务器上下文中的任何事件总线。 主题是一对多通信的输出框(我将其解释为一个事件发布者,多个订阅者) 主题可以处理不同类型的事件消息,只要它们在某种程度上是相关的(当然,这是非常相关的) 在DDD中,有一个有界上下文的概念,我喜欢将微服务/模块作为实现这些有界上下文的一种方式。因此,即使其他一些服务

  • 我有三根线。线程1(T1)是生成器,它生成数据。线程2和线程3(T2和T3)分别等待T1的数据在单独的循环中处理。我正在考虑在线程之间共享BlockingQueue,并通过调用“Take”让T2和T3等待。

  • 我有一个用例“XML文件==>Kafka主题==>Build REST API to Query”来自Kafka主题的数据。我熟悉将数据转换为Avro格式,并编写到kafka主题。 您能建议如何发布XML吗?

  • 向Kafka推送100,000条消息 在使用者使用所有100,000条消息之前,使用Ctrl-C关闭zookeeper和kafka服务(这是通过在consumer方法中使用来模拟的)。 发现 在zookeeper和kafka服务被关闭后,消费者继续在控制台上写消息。 问题 我如何使消费者从上次消费的消息的索引+1继续。 向Kafka推送100,000条消息 在使用者使用所有100,000条消息之前

  • 我无法将KafkaProducer使用java从Windows(主机操作系统)上的eclipse发送到运行在Hortonworks沙箱上的kafka主题。我的java代码如下所示 当我运行这个java代码时没有错误,它只是打印消息的索引,在本例中只有0,然后终止,我无法在hortonworks沙箱的cmd接口上的console-consumer中看到0。 这是pom.xml依赖项 我可以从制片人那