我有一个Kafka流,设置如下:
我知道如何为快乐路径设置它(REST端点返回HTTP 2xx)。我的问题是:如果我的端点返回400,我如何配置我的kstream来处理它而不发出消息?
这是我的KSteam配置:
final KStream<String, Message> stream = streamsBuilder.stream(topic,
Consumed.with(Serdes.String(), messageJsonSerde));
stream
.filter((key, value) -> MessageType.CASE_MATCHED.equals(
value.getEventType()))
.mapValues(notifierService::handleNotification) // calls REST endpoint
.to(topic, Produced.with(Serdes.String(), messageJsonSerde));
return stream;
答案 0 :(得分:1)
我想最简单的方法是在filter
之后添加另一个mapValue
,删除未成功处理的邮件。
您可以更改第一个mapValue
以将此信息添加到记录中,以便filter
可以访问它。此外,您可以在第二个mapValue
之后再执行一次filter
以删除此额外的success
标记,以将未修改的消息写回Kafka。
当然,这不会重新处理任何失败的消息,但只会从输出中过滤掉失败的消息。