gpt4 book ai didi

java - Spring Cloud 上的 KafkaHeaders.RECEIVED_MESSAGE_KEY 与 KafkaHeaders.MESSAGE_KEY header

转载 作者:行者123 更新时间:2023-12-01 17:49:45 27 4
gpt4 key购买 nike

我正在使用Spring Cloud Stream。我想知道 KafkaHeaders.RECEIVED_MESSAGE_KEYKafkaHeaders.MESSAGE_KEY

之间有什么区别

我有 2 个项目,第一个使用 KafkaHeaders.MESSAGE_KEY 作为 header 生成消息:

    public void sendResponse(ThirdPartyResponse thirdPartyResponse) {

log.info("Sending response of type 'completed' [{}].", thirdPartyResponse);
integrations.send(
withPayload(ApplicationSubmissionSuccessPayload.success(thirdPartyResponse))
.setHeader(KafkaHeaders.MESSAGE_KEY, thirdPartyResponse.getData().getApplicationId())
.build());

}

第二个使用 KafkaHeaders.RECEIVED_MESSAGE_KEY

@StreamListener(target = "ofaOut")
public void receive(@Header(KafkaHeaders.RECEIVED_MESSAGE_KEY) String applicationId, @Payload String payload) throws JsonProcessingException {

...
}

但是我收到了这个错误

    2020-03-23 16:13:27.924 ERROR 1 --- [container-0-C-1] o.s.integration.handler.LoggingHandler   : 
org.springframework.messaging.MessageHandlingException: Missing header 'kafka_receivedMessageKey' for method parameter type [class java.lang.String], failedMessage=GenericMessage [payload=byte[739],
headers={kafka_offset=285, scst_nativeHeadersPresent=true, kafka_consumer=org.apache.kafka.clients.consumer.KafkaConsumer@67c19b7c, deliveryAttempt=3, kafka_timestampType=CREATE_TIME,
kafka_receivedMessageKey=null, kafka_receivedPartitionId=0,
contentType=application/json, kafka_receivedTopic=com.product.foo.ofa.out, kafka_receivedTimestamp=1584715870225, kafka_groupId=aop-foo-kyc}]

缺少标题

Missing header 'kafka_receivedMessageKey'

如何修复它?

最佳答案

RECEIVED... 在入站消息上设置;另一种是让应用程序指定出站消息的键值。

它们的不同之处在于,当应用程序收到消息并执行某些操作并将消息重新发布到另一个主题时,可以避免意外传播。

使用 Spring Integration 时,当消息遍历流时,会自动复制 header 。

出站消息映射器不会映射 RECEIVED... header ,因此它们不会出现在 ProducerRecord 中。

... kafka_receivedMessageKey=null ...

表示入站记录上的键为空。

要接收空键,请使用

@Header(name = KafkaHeaders.RECEIVED_MESSAGE_KEY, required = false)

关于java - Spring Cloud 上的 KafkaHeaders.RECEIVED_MESSAGE_KEY 与 KafkaHeaders.MESSAGE_KEY header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60817885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com