如何处理基于事件的异步服务通信的超时?

时间:2020-10-15 08:47:00

标签: java architecture microservices

我得到了Service1,Service2以及通过Kafka进行通信的这些服务。当我从Service1向Service2发送请求时,我需要确保在10秒内Service1必须收到Service2的响应。如果不是这样,我需要在Service1上将请求状态更新为“超时”。

我需要每秒发送数百个请求,并且我认为每个请求都不启动预定任务是一种有效的方法。还有其他方法可以处理超时情况吗?

void sendRequestToKafka(){
    //Send request to Kafka

    Runnable checkRequestCompleted = () -> {
        //Check request has a response from database
        //If not update request status to timeout
    };

    ScheduledExecutorService executorService= Executors.newScheduledThreadPool(4);
    executorService.schedule(checkRequestCompleted, 10, TimeUnit.SECONDS);

}

数据库架构;

id|request|response|status(started, timeout, completed)

enter image description here

0 个答案:

没有答案
相关问题