2016-11-03 2 views
1

völlig neu in Java.spring-kafka: Wie übergibt man eine Methode an eine andere Methode, die (per Entwurf) nie zurückkehrt?

Schreiben einer feder kafka App, die die folgende Kafka-Listener-Methode hat:

@KafkaListener(id = "receiver-api", 
      topicPartitions = 
        { @TopicPartition(topic = "topic1", 
          partitionOffsets = @PartitionOffset(partition = "0", initialOffset = "0")))}) 
    public void receiveMessage(String message) { 
     try { 
      JSONObject incomingJsonObject = new JSONObject(message); 

       handleMessage(incomingJsonObject); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

fragte ich habe diesen Teil der App in einem separaten Stand-alone-Paket Refactoring, so dass die „receiveMessage "könnte aufgerufen werden, und anstelle von" handleMessage "könnte eine Methode/Funktion übergeben werden, um jede eingehende Nachricht zu verarbeiten.

Diese "receiveMessage" -Methode kehrt nie zurück, da sie immer auf ein Kafka-Thema hört.

Was die richtige Syntax sein würde, zu ändern/in dieser Methode hinzufügen, so dass es als Paket/Bibliothek und eine Botschaftsmethode Handhabung würde übergeben, um es durch den anrufenden App aufgerufen werden könnte:

... 

import kafkaReceiver; 

messageHandler(String message){ 
...... 
} 

kafkaReceiver.receiveMessage(messageHandler); 

Antwort

1

Es ist Java. Es gibt kein solches Konzept method to method. Es gibt Objekte, die normalerweise services genannt werden. So können Sie Ihren @KafkaListener Service extrahieren und in ihn eine passende Service-Implementierung einspeisen:

Verwandte Themen