[FIXED] Spring Integration @ServiceActivator Message Handler funktioniert nicht

Ausgabe

Warum druckt testOutputHandler() nichts? Es scheint, dass alarmHandler() keine Nachricht an outputChannel = “testOutput” sendet

@Bean
@ServiceActivator(inputChannel = CHANNEL_ALARM, requiresReply = "true", outputChannel = "testOutput")
public MessageHandler alarmHandler(SessionFactory<FTPFile> sessionFactory) {
    return message -> {
        System.out.println(CHANNEL_ALARM);
        System.out.println(message.getHeaders());
        };
}

@Bean
@ServiceActivator(inputChannel = "testOutput" )
public MessageHandler testOutputHandler() {
    return message -> {
        System.out.println("test");
        System.out.println(message.getHeaders());
    };
}

Hier ist die Konsolenausgabe, wir können sehen, dass alarmHandler seine Arbeit macht, aber testOutput nicht

04.10.2022 17:56:53.710 INFO 26092 --- [ main] osbabJobLauncherApplicationRunner : Ausführen der Standardbefehlszeile mit: []
Alarm
{file_remoteHostPort=192.168.1.44:21, file_remoteFileInfo={"directory":false,"filename":"Alarm_Logs_12.9.2022_0.41.csv","link":false,"modified":1664782140000,"permissions":" ----------","remoteDirectory":"for_it","size":88804}, file_remoteDirectory=for_it, channel=alarm, id=67d21ff6-e0ef-1992-2b32-ab759a8c1076, closeableResource=org .springframework.inte gration.file.remote.session.CachingSessionFactory$CachedSession@ 4b9ffb22, file_remoteFile=Alarm_Logs_12.9.2022_0.41.csv, timestamp=1664884618273}

Lösung

Das MessageHandler, was Sie in Ihrer alarmHandler()Bean-Definition verwenden, hat einen Vertrag wie diesen:

void handleMessage(Message<?> message) throws MessagingException;

In der Tat erzeugt es nichts, outputChannelda sein Rückgabetyp ist void.

Ich bin mir nicht sicher, was Ihre Erwartungen sind, da Sie sich definitiv in diese Ecke gestellt haben.

Um es an zu senden, testOutputmüssen Sie Ihre Methodensignatur wie folgt ändern, zum Beispiel:

@ServiceActivator(inputChannel = CHANNEL_ALARM, requiresReply = "true", outputChannel = "testOutput")
public Strung alarmHandler(Message<?> message) {
        System.out.println(CHANNEL_ALARM);
        System.out.println(message.getHeaders());
      return "foo";
}


Beantwortet von –
Artem Bilan


Antwort geprüft von –
Mildred Charles (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like