EJB消息驱动注释中的多个队列

时间:2011-05-24 15:18:15

标签: ejb-3.0

我有3个队列,这三个队列需要被MDBbean监听,因此根据读取输入,我将为每个输入类别分割出任务。

截至目前,代码仅适用于一个队列,我不知道如何为多个队列实现它。你能指导我吗

@MessageDriven(mappedName = “receiver1”)

公共类MDBMessages实现MessageListener

如何让我的MDBMessage监听receiver2和receiver3队列。

由于 普拉巴卡尔

3 个答案:

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