当前位置: 首页 > 知识库问答 >
问题:

用于火灾和遗忘模型的Spring Cloud网关过滤器工厂

申屠亦
2023-03-14

我正在探索Spring Cloud网关过滤器工厂,它可以接受请求并将SUCCESS超文本传输协议状态返回给调用者。之后,根据过滤器出厂配置将其转发到目的地。

caller ---> Spring Cloud Gateway
      <--- Request accepted 
           Spring Cloud Gateway  ---> Destination

我在Spring doc中没有找到任何解决方案。有没有现有的过滤器工厂来实现这种模式?如果没有,那么有什么建议如何解决这个问题?

注意:我们想要中断Spring Cloud Gateway通信的原因是目标服务器响应时间非常高,呼叫者不能等待那么长的时间。

如有任何建议,将不胜感激。

共有1个答案

邢和光
2023-03-14

所以总的来说,解决方案可能是下一个。你需要重定向调用到一些endpoint,这将把请求未来的处理等。这部分可以使用JMS方法实现,它可以是任何实现,如ActiveMQ,RabbitMQ等。你应该根据你的需求和期望选择经纪人。

当请求来自网关时,您在endpoint上重定向并简单地将消息放入队列,另一个服务将监听这些队列中的消息并处理它们。

另一种方法是使用冲刺批处理作业来处理一些逻辑等。当客户机进行呼叫时,它通过网关,然后网关将请求转发到微服务endpoint,然后将请求存储在数据库上,并返回客户机202。然后通过cron过程逻辑使用批处理作业。

使用第一种方法的好处是在微服务之间失去耦合、异步处理和易于扩展。

对于spring批处理作业或任何调度程序,在扩展时都会遇到困难,因为您需要在多个实例上一次只运行一个作业。要解决此问题,可以使用schedlock库。

在接受请求时处理的重试策略的情况下,如果事务失败,MOM(面向消息的中间件)将更容易处理,因为它有一些重试配置。

使用spring批处理作业,您需要管理数据库中请求的状态,而不是运行状态为“已处理”的请求。

 类似资料:
  • 问题内容: 我了解这是针对您不关心响应的情况。 即使响应对于正在运行的应用程序并不重要,它也可以保证交付吗? 问题答案: 实际上,Redis协议并不真正支持“即发即弃”操作。除了发布/订阅流量外,所有Redis命令都与答复匹配,并且无法告诉Redis服务器忽略答复。 现在,某些客户端(例如StackExchange.Redis)通过协议的异步实现来模拟“解雇”模式。实际上,StackExchang

  • 我正在尝试将JHipster从使用Zuul迁移到Spring云网关。JHipster使用Eureka来查找路由,我相信我已经正确配置了Spring Cloud Gateway来查找路由并向它们传播访问令牌。下面是我的配置: 我创建了一个pull请求,以显示集成Spring Cloud Gateway后发生了什么变化。 https://github.com/mraible/jhipster-reac

  • 当我试图从zuul预过滤器访问另一个REST API(在ZUUL路由中注册)时,我面临的问题是,调用变得递归,即它一次又一次地运行我的预过滤器代码。我的Usecase如下- > 在Zuul方法中,我正在验证头中传递的令牌。 在验证令牌之后,我调用一个rest服务(用户位置服务)来获取用户详细信息。我的用户位置服务本身已在ZUUL注册,如下所示: 问题是JWT令牌验证代码正在一次又一次地运行,您能否

  • 此外,删除和添加一个新的规则可以吗?因为我们需要更新过滤器(总是在sql过滤器中添加一个额外的条件),基于可能在任何时间点发生的触发器?

  • 本文向大家介绍详解SpringCloud Gateway之过滤器GatewayFilter,包括了详解SpringCloud Gateway之过滤器GatewayFilter的使用技巧和注意事项,需要的朋友参考一下 在Spring-Cloud-Gateway之请求处理流程文中我们了解最终网关是将请求交给过滤器链表进行处理,接下来我们阅读Spring-Cloud-Gateway的整个过滤器类结构以及

  • 我试图调试我的应用程序,但调试器没有击中此代码块。这是我的自定义网关过滤器。 下面是这个过滤器的配置 当尝试发送请求时,此endpoint不会启动调试器或将日志打印到控制台。我在这里错过了什么。谢谢你。 如果我在主应用程序中创建AuthorizationHeaderFilter的bean,如下所示 应用程序在启动时引发此错误 我还为云api网关设置了日志级别来调试,下面是日志