我有一个WebLogic(12.1.3)群集,其中包含两个托管服务器。每个服务器都部署了相同的EAR。 EAR包含两个消息驱动bean(MDB),用于侦听相同的分布式JMS主题。
每当向JMS主题发送消息时,只有一个MDB接收它。有没有人建议原因可能是什么?我怀疑它可能是WebLogic为MDB主题订阅提供的所有不同配置选项,但我已经尝试了所有我能想到的但没有成功。
任何帮助都将不胜感激。
@MessageDriven for MDB1
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName="destinationJndiName", propertyValue="jms/ObjectCreatedTopic"),
@ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Topic"),
@ActivationConfigProperty(propertyName="subscriptionDurability", propertyValue="Durable"),
@ActivationConfigProperty(propertyName="topicMessagesDistributionMode", propertyValue="One-Copy-Per-Application"),
@ActivationConfigProperty(propertyName="distributedDestinationConnection", propertyValue="LocalOnly")
}, name="ObjectCreatedListener1")
@MessageDriven for MDB2
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName="destinationJndiName", propertyValue="jms/ObjectCreatedTopic"),
@ActivationConfigProperty(propertyName="destinationType", propertyValue="javax.jms.Topic"),
@ActivationConfigProperty(propertyName="subscriptionDurability", propertyValue="Durable"),
@ActivationConfigProperty(propertyName="topicMessagesDistributionMode", propertyValue="One-Copy-Per-Application"),
@ActivationConfigProperty(propertyName="distributedDestinationConnection", propertyValue="LocalOnly")
}, name="ObjectCreatedListener2")
答案 0 :(得分:0)
我认为以下weblogic documentation关于该主题的摘录适用于您(强调我的):
One-Copy-Per-Application topic
持久的MDB,订阅本地RDT,并使用LocalOnly
属性的默认distributedDestinationConnection
值,不支持服务迁移,只需要一个根据WebLogic Server实例配置主题成员。如果发生服务迁移,如果没有配置本地主题成员,或者如果每个服务器部署了多个主题成员,则应用程序可能会遇到重复或丢失的消息,并且还可能创建累积未处理消息的放弃订阅。如果需要服务迁移,请使用EveryMember
属性distributedDestinationConnection
选项,而不是默认LocalOnly
。
所以你有它:你的设置唯一可行的参数组合是
@ActivationConfigProperty(propertyName="topicMessagesDistributionMode", propertyValue="One-Copy-Per-Application")
@ActivationConfigProperty(propertyName="distributedDestinationConnection", propertyValue="EveryMember")