|
该版本仍在开发中,尚未被视为稳定。请使用最新的稳定版本,使用 Spring AMQP 4.0.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如果转换后的有效载荷是怪物2一个猫,或帽子.
你应该明白,系统必须能够根据有效载荷类型识别出独特的方法。
检查该类型是否可分配给一个没有注释或用@Payload注解。
注意,方法签名与方法层面讨论相同@RabbitListener (前面描述过)。
从版本 2.0.3 开始,@RabbitHandler方法可以被指定为默认方法,如果其他方法没有匹配,则调用该方法。
最多只能用一种方法来指定。
@RabbitHandler仅用于转换后的消息有效载荷处理,如果你希望接收未转换的原始文件消息你必须用的对象@RabbitListener是方法论,不是课堂。 |