0

春のカフカ設定を使用して、アップストリームシステムからメッセージを受信します。 我々は別々containerfactoryを持っているとして、このコードは完全に正常に動作トピックの設定にSpring Kafkaはトピックリストからのリッスンを無効にします。

@Bean(id="firstcontainer") 
protected ConcurrentMessageListenerContainer createContainerInstance(...) { 
//topics addition 
} 


@Bean(id="secondcontainer") 
protected ConcurrentMessageListenerContainer createContainerInstance(...) { 
//topics addition 
} 


@KafkaListener(firstcontainer) 
public void listenerFirst(){ 

} 

@KafkaListener(secondcontainer) 
public void listenerSecond(){ 

} 

をJavaの構成を有しています。 1つのインスタンスがfirstContainerをlistenし、secondContainerが無効になるこのアプリケーションの複数のインスタンスをスピンアップする必要があります。

そして、2番目のインスタンスでは、secondContainerを有効にしてfirstContainerを無効にします。 トピック(トピックのリスト)からのリスニングを無効にすることができるかどうかを理解するのに役立つ人はいますか?

答えて

0
  1. 2つのインスタンス(または複数)は同一で、外部設定からトピックリストを受け入れることができます。 @KafkaListenerはそれを可能にします。

  2. アプリケーションに複数のBeanを残したい場合は、Spring @Profileの機能があります。このようにして、@KafkaListenerメソッドを別のクラスに分類し、適切な@Profileでコンポーネントをマークする必要があります。これは外部でも有効にできます。

  3. Apache Kafkaの概念はConsumer Groupで、同じグループのすべてのコンシューマがブローカに参加していますが、そのうちの1つだけがそのトピックの単一パーティションのレコードを消費することを意味します。この方法では、アプリケーションのインスタンスの数に関係なく、適切なKafkaグループ使用の場合に重複を心配する必要がないため、一貫性が維持されます。

関連する問題