Hey ich versuche, eine Standard-Header für mehrere Methoden in meinem @MessagingGateway
zu setzen. Alle diese Methoden gehen in den gleichen Methodenkanal, also versuche ich, den Methodennamen zu verwenden, um zu bestimmen, woher die Nachricht kam. Für die Methodennamen auf den Standardkopf zuweisen, verwende ich den Spel Ausdruck #methodName
nach, was ich gefunden in:Standard-Header auf @MessageGateway nicht auf der Nachricht angezeigt
https://github.com/spring-projects/spring-integration/pull/929
Hier ist das Gateway:
@MessagingGateway(defaultHeaders={@GatewayHeader(name="statusMethod", expression="#methodName")})
public interface LoggingGateway {
@Gateway(requestChannel="logStatusChannel")
public void logTokenStatus(@Header("pairInfo") PairInfo info, @Payload String status);
@Gateway(requestChannel="logStatusChannel")
public void logDataMessageStatus(@Header("pairInfo") PairInfo info, @Payload String status);
}
Aber weiter unten in der Strömung Wenn ich versuche, auf die Kopfzeile zuzugreifen, teilt mir der Fehler mit, dass die Standardkopfzeile nicht gefunden werden kann.
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 18): Property or field 'statusMethod' cannot be found on object of type 'org.springframework.messaging.MessageHeaders' - maybe not public?
Ich habe sogar versucht, die Standard-Header und Hinzufügen einer Kopfzeile zu jeder der Methoden. Auch das hat nicht geholfen. Ich habe versucht, anstatt #methodString
, aber es auch nicht gefunden.
Keine Ahnung, ob die Java-Bean, die ich verwende, ist die genaue Übersetzung von dem, was ich in der XML-Konfiguration in der Verbindung sah.
Schätzen Sie die Hilfe.
'# gatewayMethod.name' hat den Trick dank gemacht :-) – alokraop