【问题标题】:mulitple queues in EJB messagedriven annotationEJB 消息驱动注释中的多个队列
【发布时间】:2013-07-02 02:34:13
【问题描述】:

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

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

@MessageDriven(mappedName="receiver1")

公共类MDBMessages实现MessageListener

如何让我的 MDBMessage 监听接收器 2 和接收器 3 队列。

谢谢 普拉巴卡尔

【问题讨论】:

    标签: ejb-3.0


    【解决方案1】:

    来自文档:

    消息驱动的 bean 被定义为 单一消息类型,按照 与消息侦听器接口它 雇用。

    因此,无法为多个目标类型映射 MDB。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:
        @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 类中只能使用单个目标类型。

        【讨论】:

          猜你喜欢
          • 2011-01-28
          • 1970-01-01
          • 2012-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-21
          • 2016-08-21
          • 1970-01-01
          相关资源
          最近更新 更多