发送者结果通道
从 4.0.3 版本开始,你可以配置 resultMetadataChannel 来接收 SenderResult<?>,以确定发送的成功/失败情况。
SenderResult 包含 correlationMetadata,允许你将结果与发送进行关联;它还包含 RecordMetadata,用于指示发送记录的 TopicPartition 和偏移量。
resultMetadataChannel 必须 是一个 FluxMessageChannel 实例。
以下是使用此功能的示例,其中包含类型为 Integer 的相关元数据:
@Bean
FluxMessageChannel sendResults() {
    return new FluxMessageChannel();
}
@ServiceActivator(inputChannel = "sendResults")
void handleResults(SenderResult<Integer> result) {
    if (result.exception() != null) {
        failureFor(result);
    }
    else {
        successFor(result);
    }
}
要在输出记录上设置关联元数据,请设置 CORRELATION_ID 头:
streamBridge.send("words1", MessageBuilder.withPayload("foobar")
        .setCorrelationId(42)
        .build());
在使用 Function 功能时,函数的输出类型必须是一个 Message<?>,并且需要将关联 ID 头设置为所需的值。
元数据应该是唯一的,至少在发送期间如此。