我有3个组件A,B和C
A =最终用户 B =一个中间件,它从最终用户A获取输入并将请求委托给C C =是否有人工作并返回对B的回应。
用例:假设在将请求从B成功委派给C后,C组件关闭。在错误处理方面最合适的方法是什么?
我应该在B组件上添加超时功能,这样如果B在指定的时间内没有从C获得响应,那么它会返回错误响应吗?
为了跟踪失败的请求,我应该使用数据库存储还是持久队列来记录错误响应?
请告知。
答案 0 :(得分:0)
首先,您应该问自己一些框架的用法:
如果你想自己实现低级逻辑,你肯定会查看已经存在的实现及其超时参数(比如http://www.baeldung.com/httpclient-timeout)。
如果出现问题,您还应该更好地将错误代码从C返回到B(这意味着您应该捕获C端的所有异常并将其包装到错误响应中)。我甚至想说,最好在出现错误的情况下返回否定结果而不是抛出异常(它会花费更少)并且只抛出未经检查的异常(https://blog.philipphauer.de/checked-exceptions-are-evil/ - 如果你问为什么)。