为什么我们只能在消息驱动的bean中设置目标类型(队列名称)?

时间:2013-07-03 09:43:59

标签: ejb-3.0 message-driven-bean

为什么我们只能在EJB中的消息驱动bean中设置单个目标类型?

@MessageDriven(activationConfig = { 
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"), 
@ActivationConfigProperty(propertyName = "destination", propertyValue = "FileProcess"), 
@ActivationConfigProperty(propertyName = "transactionTimeout", propertyValue = "3600"), 
@ActivationConfigProperty(propertyName = "maxSession", propertyValue = "100") })
@TransactionManagement(value = TransactionManagementType.CONTAINER)
public class FileMDB implements MessageListener {

  //.....
}

我想为单个MSD添加多个目标类型,我可以在MDB类中添加多个队列名称或目标类型吗?

1 个答案:

答案 0 :(得分:0)

简短的回答是:因为Sun(和JSR专家组)就是这样设计的。

答案越长:我猜你需要处理许多包含相同格式消息的队列,并且对于消息来自的服务并不重要。你可以:

  1. 实现一个实现MessageListener接口的基类,并根据需要多次继承,每次应用不同的@ActivationConfigProperty注释。
  2. (更好的选择)如果您的消息传递系统允许,请创建一个额外的队列,并配置应用程序感兴趣的所有队列,以将消息传递到该队列。然后,您可以继续使用当前的MDB配置,而无需生成样板代码。
相关问题