gpt4 book ai didi

java - 如何在 @RabbitListener 中创建有状态服务

转载 作者:行者123 更新时间:2023-12-02 11:42:25 34 4
gpt4 key购买 nike

如何在消息(@RabbitListener)中创建有状态服务(几个@Autowire),如果是新消息,状态应该是干净的。在 @Service 的 RabbitQM(Spring AMQP) 之前,我使用了 @Scope(value = WebApplicationContext.SCOPE_REQUEST, proxyMode = ScopedProxyMode.TARGET_CLASS) 但现在它不起作用。

最佳答案

SCOPE_REQUEST 不能与 @RabbitListener 一起使用,因为它根本不是一个 Web。您可以很好地使用 MVC 应用程序中的 SCOPE_REQUEST/SESSION ,因为您的服务是从具有适当环境和实际范围的 servlet 容器中调用的。

当您在 @RabbitListener 中执行逻辑时,您应该记住,这个逻辑对监听器容器从 RabbitMQ 队列轮询的消息使用react,而最后一个则在无限循环中执行此操作由特定线程中的执行器旋转。该范围在这里不起作用。

您可能会考虑处理状态,就像ThreadLocal填充您的@RabbitListener并从服务路径的调用堆栈访问。这正是 Spring SecurityContext 的管理方式。

关于java - 如何在 @RabbitListener 中创建有状态服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48456833/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com