我有一个使用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());
}
}
});