Spring Boot 线程中的 KafkaTemplate 是否安全。我可以创建一个 KafkaTemplate 并使用它来将信息发送到同一 kafka 主题,以便在我的 Web 服务中进行多个请求。
最佳答案
是的,KafkaTemplate
被设计为线程安全的。如果你看看它的 source code ,您会看到以下成员变量声明:
protected final Log logger = LogFactory.getLog(this.getClass()); //NOSONAR
private final ProducerFactory<K, V> producerFactory;
private final boolean autoFlush;
private final boolean transactional;
private final ThreadLocal<Producer<K, V>> producers = new ThreadLocal<>();
private RecordMessageConverter messageConverter = new MessagingMessageConverter();
private volatile String defaultTopic;
从
ThreadLocal
来看和 volatile
变量定义,你可以推断它被设计为从多个线程使用,因此它必须是线程安全的(如果不是,那么你应该提交错误报告)。如果设计师用信息性的
@ThreadSafe
对其进行注释会更好尽管或至少在类的 JavaDoc 注释中指出了这一点。
关于spring-boot - KafkaTemplate 线程安全吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42105672/