0

Wir verwenden Spring Kafka-Konfiguration, um Nachrichten von vorgelagerten Systemen zu empfangen. Wir haben Java-Konfiguration für Thema KonfigurationSpring Kafka deaktiviert das Abhören von einer Liste von Themen

@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(){ 

} 

Dieser Code perfekt funktioniert gut, wie wir seperate containerfactory haben. Nun müssen wir mehrere Instanzen dieser Anwendung hochfahren, wobei eine Instanz auf firstContainer hört und secondContainer deaktiviert wird

Und als zweite Instanz wird nur secondContainer aktiviert und firstContainer deaktiviert. Kann jemand helfen zu verstehen, wenn es möglich ist, das Abhören von einem Thema (Liste von Themen) zu deaktivieren?

Antwort

0
  1. Ihre zwei Instanzen (oder viele) können identisch sein und eine Themenliste aus der externen Konfiguration akzeptieren. Die @KafkaListener ermöglicht dies zu tun.

  2. Es gibt Frühling @Profile Funktionalität, wenn Sie noch einige Bohnen in Ihrer Anwendung behalten möchten. Auf diese Weise sollten Sie Ihre @KafkaListener Methode auf verschiedene Klassen trennen und ihre Komponente mit einer entsprechenden @Profile markieren, die wiederum extern aktiviert werden kann.

  3. Der Apache Kafka hat ein Konzept als Consumer Group was bedeutet, dass alle Verbraucher in der gleichen Gruppe an den Broker anschließen, aber nur einer von ihnen wird in dem Thema Datensätze aus einzelner Partition verbrauchen. Auf diese Weise erhalten Sie unabhängig von der Anzahl der Instanzen Ihrer Anwendung eine Konsistenz, da Sie sich im Falle einer ordnungsgemäßen Verwendung der Kafka-Gruppen keine Gedanken über Duplikate machen müssen.

Verwandte Themen