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, outputChannel
da 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, testOutput
mü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)