2017-02-08 9 views
1

KafkaTemplateはスプリングブートスレッドセーフです。 1つのKafkaTemplateを作成し、これを使用して、Webサービスで複数のリクエストに対して同じカフカトピックに情報を送信できますか?KafkaTemplateはスレッドセーフです

答えて

1

はい、KafkaTemplateはスレッドセーフであるように設計されています。あなたはそのsource codeを見れば、あなたは以下のメンバ変数の宣言を参照してください。ThreadLocalvolatile変数の定義から判断

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; 

、あなたはそれが複数のスレッドから使​​用するように設計され、したがって、それはスレッドでなければならないことを推測することができます-safe(そうでない場合、バグ報告を提出する必要があります)。

デザイナーが情報を@ThreadSafeに注釈していた場合、または少なくともクラスのJavaDocコメントでこれを指摘していた方がいいでしょう。

+1

もっと一致しませんでした。オープンソースには数多くの良いライブラリがありますが、ソースコードのドキュメントや注釈については、ほとんどまたは非常に簡単です。 JDKは私が今までに見た中で最もよく文書化されたJavaソースコードです。 –

関連する問題