我有3个队列,这三个队列需要被MDBbean监听,因此根据读取输入,我将为每个输入类别分割出任务。
截至目前,代码仅适用于一个队列,我不知道如何为多个队列实现它。你能指导我吗
@MessageDriven(mappedName = “receiver1”)
公共类MDBMessages实现MessageListener
如何让我的MDBMessage监听receiver2和receiver3队列。
由于 普拉巴卡尔
答案 0 :(得分:2)
来自文档:
为a定义消息驱动的bean 单一消息类型,按照 用消息监听器接口吧 采用。
因此,无法为多个目标类型映射MDB。
Haven没试过,但你可以尝试在ejb-jar.xml中配置MDB,其中不同的JNDI名称指向同一个类&为每个目的地添加不同的目的地。如果配置有效,则MDBMessages将能够侦听xml中所有指定队列的消息。
答案 1 :(得分:0)
使用部署描述符创建mdb的多个实例。每个实例都侦听一个队列。
还有一些代理(如activeMQ)允许一个mdb侦听同一类型(队列,主题)的多个目标,如果它们使用activemq资源适配器。
答案 2 :(得分:0)
@Consumer(activationConfig = { @ActivationConfigProperty(
propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@**ActivationConfigProperty(propertyName = "destination",
propertyValue = "queue/MyTasksProcess"),**
public class MyProcessorMDBean implements Downloader {
public void processSomething(Serializable anyParameter){
//Do the actual processing
}
对于给定的消息驱动bean,您可以将消息路由到单个队列,因此只能在bean类中使用单个目标类型。