ちょっと、@MessagingGateway
に複数のメソッドの既定のヘッダーを設定しようとしています。これらのメソッドはすべて同じメソッドチャネルに入っているので、メソッド名を使ってメッセージがどこから来たのかを判断しようとしています。デフォルトのヘッダーにメソッド名を割り当てるために、私は私が中に見つけたものにつきとしてのspel式#methodName
を使用しています:@MessageGatewayに設定されている既定のヘッダーがメッセージに表示されない
https://github.com/spring-projects/spring-integration/pull/929
ここゲートウェイです:
@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);
}
しかし、ダウンフロー、さらにヘッダーにアクセスしようとすると、エラーが表示され、デフォルトのヘッダーが見つからないことがわかります。
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?
私はさらに、デフォルトのヘッダーを削除し、それぞれのメソッドにヘッダーを追加しようとしました。それでも助けにならなかった。代わりに#methodString
を使ってみましたが、どちらも見つかりませんでした。
私が使用しているJava Beanがリンクのxml設定で見たものの正確な翻訳であれば、Dunnoはダンノーです。
ヘルプを評価してください。
'#gatewayMethod.name'はトリックに感謝しました:-) – alokraop