如何理解事件是否成功发送给消费者



我有一个使用Spring Stream Kafka发布事件的主服务,我有两个不同的服务使用这个事件。这些服务应该使用事件来完成流程。

Order Service(Publisher-OrderEvent) -- Stock Service(Listener-OrderEvent) -- Payment Service(Listener-OrderEvent)

(应完成库存检查和付款以完成订单(

如何理解此事件是否从订单服务成功发送到这两个服务?我需要知道他们中是否有一个倒下了。如果它坏了/其中一项服务无法收到事件,我需要取消订单服务中的订单。你们有这个例子的实现吗?

提前谢谢。

选项1:使用度量&records-consumed-total

从消费者端监视此属性/metric with the client id:

kafka.consumer:type=consumer-fetch-manager-metrics,client-id="{client-id}"

查看records-consumed-total属性内部,一旦收到,它将增加。


选项2:使用回调

您也可以使用回调来验证它是否已发送

">完全非阻塞使用可以使用Callback参数来提供回调,该回调将在请求完成时被调用";

ProducerRecord<byte[],byte[]> record = new ProducerRecord<byte[],byte[]>("the-topic", key, value);
producer.send(myRecord,
new Callback() {
public void onCompletion(RecordMetadata metadata, Exception e) {
if(e != null) {
e.printStackTrace();
} else {
//... your code message was received!!
System.out.println("The offset of the record we just sent is: " + metadata.offset());
}
}
});

相关内容

  • 没有找到相关文章

最新更新