我正在探索Spring 过滤器工厂,它可以接受请求并将成功的http状态返回给调用者。然后,根据过滤器工厂的配置将其转发到目的地。
caller ---> Spring Cloud Gateway
<--- Request accepted
Spring Cloud Gateway ---> Destination在春季医生中,我没有找到任何解决方案。是否有任何现有的过滤工厂来实现这一模式?如果没有,那么有什么建议如何解决这个问题?
注意:我们之所以想中断Spring的通信,是因为目标服务器的响应时间非常长,呼叫者不能等待这么长的时间。
如有任何建议,将不胜感激。
发布于 2020-04-19 03:50:20
因此,一般来说,解决方案可能是下一个。您需要将调用重定向到某个端点,该端点会将请求提交给未来处理等。这部分可以使用JMS方法实现,可以是任何实现,如ActiveMQ、RabbitMQ等。您应该根据需要和期望选择代理。
当请求来自网关时,您在端点上重定向,简单地将消息放在队列上,则另一个服务将侦听来自这些队列的消息并对其进行处理。
另一种方法是使用sprint批处理作业来处理某些逻辑等。当客户端通过网关进行调用时,网关将将请求转发到微服务端点,然后将请求存储在数据库中,并返回client 202。然后通过cron过程逻辑使用批处理作业。
使用第一种方法的好处是失去了微服务之间的耦合、异步处理和易于扩展。
使用spring批处理作业或任何调度程序,缩放都会遇到困难,因为您需要在多个实例中同时只运行一个作业。要解决这个问题,您可以使用调度锁库。
在请求被接受时处理重试策略的情况下,MOM(面向消息的中间件)在事务失败时会更容易一些重试配置。
使用spring批处理作业,您需要管理数据库中的请求状态,而不运行状态为“已处理”的请求等。
https://stackoverflow.com/questions/61298881
复制相似问题