gpt4 book ai didi

rabbitmq - @RabbitListener 用于多个类中的同一个队列

转载 作者:行者123 更新时间:2023-12-05 04:06:06 25 4
gpt4 key购买 nike

我想知道在 Spring AMQP 中是否可以根据负载类型从多个类中的同一队列接收消息。

我知道在类中使用@RabbitListener 注释,然后将@RabbitHandler 放在方法上,但我想在保留单个队列的同时将消息处理的复杂性拆分到多个类中。

当前使用的版本:Spring AMQP v2.0.3 和 RabbitMQ。

最佳答案

嗯,这是不可能的。您希望它的方式将不是队列。设计一个监听器并根据payload类型分配给它的方法,这实际上是一个架构决策。

作为解决方法,我建议您将逻辑从单个 @RabbitListener 类委托(delegate)给这些业务服务:

    @RabbitListener(queues = "foo")
public class MyListener {

private final ServiceA serviceA;

private final ServiceB serviceB;

public MyListener(ServiceA serviceA, ServiceB serviceB) {
this.serviceA = serviceA;
this.serviceB = serviceB;
}


@RabbitHandler
public void handleA(A a) {
this.serviceA.handle(a);
}

@RabbitHandler
public void handleB(B b) {
this.serviceB.handle(b);
}
}

关于rabbitmq - @RabbitListener 用于多个类中的同一个队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50288608/

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