0

我们广泛使用 GCP PubSub,使用 spring cloud steam 的功能绑定方法:

        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>spring-cloud-gcp-pubsub-stream-binder</artifactId>
        </dependency>

, 和org.springframework.cloud.stream.function.StreamBridge

有人知道拦截此类消息的推荐方法吗?我们的用例是我们需要手动为每条消息添加一个跟踪标识符。我正在考虑使用 ChannelInterceptor(例如下面,它工作正常,但不确定是否好主意)或 Aspect。关于方面,我尝试了一些切入点,但没有任何乐趣。

@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)
    }
}

非常感谢任何建议,谢谢

4

0 回答 0