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

时间:2018-01-26 06:49:18

标签: java spring spring-amqp spring-rabbit

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

1 个答案:

答案 0 :(得分:1)

SCOPE_REQUEST无法与@RabbitListener一起使用,因为它根本不是网络。您对MVC应用程序中的SCOPE_REQUEST/SESSION很满意,因为您的服务是从具有适当环境和范围的servlet容器中调用的。

当您在@RabbitListener中执行逻辑时,您应该记住,这一个对侦听器容器从RabbitMQ队列中轮询的消息作出反应,并且最后一个在由{调整的无限循环中执行它{1}}在特定的帖子中。范围在这里不起作用。

您可以考虑采取哪些措施处理状态,例如Executor填写在您的ThreadLocal中,并通过服务道路上的调用堆栈进行访问。这正是Spring @RabbitListener的管理方式。

相关问题