我正在使用SpringIntegration的IntegrationFlows定义消息流,并使用Jms.messageDrivenChannelAdapter从MQ获取消息,现在我需要解析它,将其发送到KAFKA并更新Couchbase。
IntegrationFlows
.from(Jms.messageDrivenChannelAdapter(this.acarsMqListener)) //MQ Listener with session transacted=true
.wireTap(ACARS_WIRE_TAP_CHNL) // Logging the message
.transform(agmTransformer, "parseXMLMessage") .filter(acarsFilter,"filterMessageOnSmiImi") // Filter the message based on condition
.handle(acarsProcessor, "processEvent") // Create the message
.handle(Kafka.outboundChannelAdapter(kafkaTemplate).messageKey(MESSAGE_KEY).topic(acarsKafkaTopic)) //send it to kafka
.handle(updateCouchbase, "saveToDB") // Update couchbase
.get();
对于每条收到的消息,我们都希望使用MDC进行记录,以帮助我们根据UUID进行收集/汇总。 请建议如何将UUID放入MDC,然后为上述流程中的每条消息清除MDC
答案 0 :(得分:0)
您只需要配置 global WireTap
并在记录消息之前在该有线窃听流中在那里进行适当的转换即可。
另一方面,可能只需要使用MDC,因为您可以像往消息中注入For
标头之类的内容,并像往常一样log()
,因此您将在日志中看到消息,并且能够使用该标头进行关联。