2017-02-08 1 views
1

KafkaTemplate은 봄 부팅 스레드 안전합니다. 하나의 KafkaTemplate을 만들고이를 웹 서비스의 여러 요청에 대해 동일한 카프카 항목으로 보내는 데 사용할 수 있습니까?KafkaTemplate 스레드가 안전합니까?

답변

1

예, 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; 

ThreadLocalvolatile 변수 정의에 의해 판단을, 당신은 따라서이 스레드해야합니다, 그것은 여러 스레드에서 사용하도록 설계되어 있음을 추론 할 수있다 -safe (그렇지 않은 경우 버그 보고서를 제출해야합니다).

디자이너가 정보 @ThreadSafe으로 주석을 달았거나 클래스의 JavaDoc 주석에서 적어도 지적한 경우 더 좋을 것입니다.

+1

더 이상 동의 할 수 없습니다. 오픈 소스는 좋은 라이브러리가 많이 있지만, 소스 코드의 문서 나 주석에 대해서는 대개 아무 것도없고 매우 간략합니다. JDK는 제가 지금까지 보아온 자바 소스 코드 중에서 가장 잘 문서화 된 것입니다. –

관련 문제