【问题标题】:Missing Message from JMS TopicJMS 主题中缺少消息
【发布时间】:2016-08-07 23:32:52
【问题描述】:

我有一个设置了两台托管服务器的 WebLogic (12.1.3) 集群。每个服务器都部署了相同的 EAR。 EAR 包含两个侦听同一分布式 JMS 主题的消息驱动 bean (MDB)。

每当向 JMS 主题发送消息时,只有一个 MDB 会接收它。有人对可能的原因有什么建议吗?我怀疑这可能是 WebLogic 为 MDB 主题订阅提供的所有不同配置选项,但我已经尝试了所有我能想到的方法,但都没有成功。

任何帮助将不胜感激。

@MessageDriven 用于 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 用于 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")

【问题讨论】:

    标签: java jakarta-ee jms weblogic12c message-driven-bean


    【解决方案1】:

    我认为weblogic documentation 中有关该主题的以下摘录适用于您(强调我的):

    One-Copy-Per-Application topic 持久的 MDB,订阅本地 RDT,并且使用 distributedDestinationConnection 属性的默认 LocalOnly 值,不支持服务迁移,并且要求每个 WebLogic 只配置一个主题成员服务器实例。如果发生服务迁移,如果没有配置本地主题成员,或者如果每个服务器部署了多个主题成员,则应用程序可能会遇到重复或丢失的消息,并且还可能创建废弃的订阅,这些订阅会累积未处理的消息。如果需要服务迁移,请使用distributedDestinationConnection 属性的EveryMember 选项而不是默认的LocalOnly

    所以你有了它:设置的唯一可行的参数组合是

    @ActivationConfigProperty(propertyName="topicMessagesDistributionMode", propertyValue="One-Copy-Per-Application")
    @ActivationConfigProperty(propertyName="distributedDestinationConnection", propertyValue="EveryMember")
    

    【讨论】:

      猜你喜欢
      • 2016-09-02
      • 1970-01-01
      • 2019-09-20
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 2011-12-12
      • 2013-09-30
      • 1970-01-01
      相关资源
      最近更新 更多