IS_*_*_EV 5 apache-kafka spring-boot kafka-producer-api
Spring Boot 线程中的 KafkaTemplate 是否安全。我可以创建一个 KafkaTemplate 并使用它来将信息发送到同一 kafka 主题,以便在我的 Web 服务中进行多个请求。
是的,KafkaTemplate被设计为线程安全的。如果查看其源代码,您会看到以下成员变量声明:
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;
Run Code Online (Sandbox Code Playgroud)
从ThreadLocal和volatile变量定义来看,你可以推断它是为多线程使用而设计的,因此它必须是线程安全的(如果不是,那么你应该提交错误报告)。
如果设计者用信息注释@ThreadSafe或至少在类的 JavaDoc 注释中指出这一点,那就更好了。
| 归档时间: |
|
| 查看次数: |
1791 次 |
| 最近记录: |