首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果我从同一应用程序生成多个消息,KafkaTemplate是否会打开到代理的多个连接?

如果我从同一应用程序生成多个消息,KafkaTemplate是否会打开到代理的多个连接?
EN

Stack Overflow用户
提问于 2020-02-12 01:02:19
回答 1查看 330关注 0票数 0

我们使用messages.Now -kafka-2.2.7.RELEASE来生成和消费KafkaTemplate我的问题是,如果我从同一应用程序生成多个消息,spring是否会打开到代理的多个连接?如果是,我们如何控制连接的no?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-12 01:39:32

这取决于;如果您不使用事务,那么默认情况下,所有操作都使用单个共享生产者(这是Kafka javadoc推荐的)。

实际行为由模板使用的DefaultKafkaProducerFactory控制,而不是模板本身。

使用2.3.x+,您可以为每个线程创建一个生产者:

代码语言:javascript
运行
复制
/**
 * Set to true to create a producer per thread instead of singleton that is shared by
 * all clients. Clients <b>must</b> call {@link #closeThreadBoundProducer()} to
 * physically close the producer when it is no longer needed. These producers will not
 * be closed by {@link #destroy()} or {@link #reset()}.
 * @param producerPerThread true for a producer per thread.
 * @since 2.3
 * @see #closeThreadBoundProducer()
 */
public void setProducerPerThread(boolean producerPerThread) {
    this.producerPerThread = producerPerThread;
    this.threadBoundProducers = new ThreadLocal<>();
}

使用事务时,要么使用生产者池(用于生产者发起的事务),要么使用每个group/topic/partition的生产者池用于消费者发起的事务(用于正确的僵尸围栏操作)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60173965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档