送信結果チャネル

バージョン 4.0.3 以降では、SenderResult<?> を受信して送信の成功 / 失敗を判断するように resultMetadataChannel を構成できます。

SenderResult には correlationMetadata が含まれており、結果を送信と関連付けることができます。これには、送信されたレコードの TopicPartition とオフセットを示す RecordMetadata も含まれます。

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 でこの機能を使用する場合、関数の出力型は、相関 ID ヘッダーが目的の値に設定された Message<?> である必要があります。

メタデータは、少なくとも送信中は一意である必要があります。