2011-05-24 55 views
2

我有3个队列,这三个队列需要由MDBbean监听,因此根据读取输入,我将为每个输入类别分出任务。EJB消息驱动注释中的多个队列

截至目前,代码工作正常,只有一个队列,我不知道如何实现它的多个队列。能否请您指导我

@MessageDriven(mappedName = “receiver1”)

公共类MDBMessages实现消息监听

我怎样才能让我的MDBMessage监听receiver2和接收器3队列。

由于 普拉巴卡尔

回答

2

从文档:

消息驱动豆为 单个消息类型定义,按照与 消息侦听器接口,它 采用。

因此,不可能为多个目标类型映射MDB。

未尝试,但可以尝试在ejb-jar.xml中配置MDB,并使用不同的JNDI名称指向相同的类&为每个目标添加不同的目标。如果配置有效,那么MDBMessages将能够在xml中监听所有指定队列的消息。

0

使用部署描述符来创建mdb的多个实例。每个实例监听一个队列。

还有代理(如activeMQ)允许一个mdb监听同一类型(队列,主题)的多个目标,如果他们使用activemq资源适配器。

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类中使用单个目标类型。