对于最新的稳定版本,请使用 Spring AMQP 3.2.0! |
多方法侦听器
从版本 1.5.0 开始,您可以指定@RabbitListener
注解。
与新的@RabbitHandler
注解,这允许单个侦听器根据
传入消息的有效负载类型。
最好用一个例子来描述这一点:
@RabbitListener(id="multi", queues = "someQueue")
@SendTo("my.reply.queue")
public class MultiListenerBean {
@RabbitHandler
public String thing2(Thing2 thing2) {
...
}
@RabbitHandler
public String cat(Cat cat) {
...
}
@RabbitHandler
public String hat(@Header("amqp_receivedRoutingKey") String rk, @Payload Hat hat) {
...
}
@RabbitHandler(isDefault = true)
public String defaultMethod(Object object) {
...
}
}
在这种情况下,个人@RabbitHandler
如果转换后的有效负载是Thing2
一个Cat
或Hat
.
您应该了解,系统必须能够根据负载类型识别唯一方法。
检查类型是否可分配给没有注释或带有@Payload
注解。
请注意,相同的方法签名适用,如方法级别@RabbitListener
(前面描述的)。
从版本 2.0.3 开始,@RabbitHandler
method 可以指定为默认方法,如果其他方法不匹配,则调用该方法。
最多可以指定一种方法。
@RabbitHandler 仅用于在转换后处理消息有效负载(如果您希望接收未转换的原始)Message 对象,您必须使用@RabbitListener 在方法上,而不是在类上。 |