Spring Cloud Steam の関数型バインダー アプローチを使用して、GCP PubSub を広く使用しています。
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>spring-cloud-gcp-pubsub-stream-binder</artifactId>
</dependency>
、 とorg.springframework.cloud.stream.function.StreamBridge
そのようなメッセージを傍受するための推奨される方法を知っている人はいますか? 私たちの使用例は、各メッセージに手動でトレース識別子を追加する必要があることです。私はChannelInterceptor(例えば、以下、うまく動作しますが、良いアイデアかどうかはわかりません)またはアスペクトの使用を検討していました。アスペクトに関して、私はいくつかのポイントカットを試しましたが、喜びはありませんでした.
@GlobalChannelInterceptor(patterns = ["[*-out]"])
class OutboundChannelInterceptor : ChannelInterceptor {
override fun preSend(message: Message<*>, channel: MessageChannel): Message<*> {
val mutableAccessor = MessageHeaderAccessor.getMutableAccessor(message)
mutableAccessor.setHeader("aha", System.currentTimeMillis())
return GenericMessage(message.payload, mutableAccessor.messageHeaders)
}
}
どんなアドバイスも大歓迎です、ありがとう