小编Lou*_*der的帖子

spring.cloud.stream.kafka.binder.headers无法正常工作

我试图用来spring.cloud.stream.kafka.binder.headers传输基于上一个问题设置的自定义标头。

我已经在文档中阅读了...

spring.cloud.stream.kafka.binder.headers
The list of custom headers that will be transported by the binder.

Default: empty.
Run Code Online (Sandbox Code Playgroud)

似乎建议您设置一个列表(用逗号分隔?)会导致自定义标头在中传输Message<>,但一旦kafka写操作完成,标头就会丢失。

我的注释创建了标头,作为对MessagingGateway的调用的一部分:

@MessagingGateway(name = "redemptionGateway", defaultRequestChannel = Channels.GATEWAY_OUTPUT, defaultHeaders = @GatewayHeader(name = "orderId", expression = "#gatewayMethod.name"))
public interface RedemptionGateway {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我观察到头是在第一次preSend调试中正确创建的:

2016-08-15 15:09:04 http-nio-8080-exec-2 DEBUG DirectChannel:430 - preSend on channel 'gatewayOutput', message: GenericMessage [payload=x.TrivialRedemption@2d052d2a[orderId=f72b2d9b-4e60-43fa-95d4-1b0b368fe49f], headers={orderId=create, id=5dccea6f-266e-82b9-54c6-57ec441a26ac, timestamp=1471288144882}] - {applicationSystemCode=x, clientIP=0:0:0:0:0:0:0:1, clusterId=Cluster-Id-NA, containerId=Container-Id-NA, correlationId=UNDEFINED, domainName=defaultDomain, hostName=Host-NA, messageId=10.113.21.144-eb8404d0-de93-4f94-80cb-e5b638e8aeef, userId=anonymous, webAnalyticsCorrelationId=|}
Run Code Online (Sandbox Code Playgroud)

但是在下一次preSend发送时,标头丢失了:

2016-08-15 15:09:05 kafka-binder- DEBUG …
Run Code Online (Sandbox Code Playgroud)

spring-cloud-stream

2
推荐指数
1
解决办法
1770
查看次数

标签 统计

spring-cloud-stream ×1