2016-04-15 17 views
1

Ich habe ein WebLogic (12.1.3) Cluster mit zwei verwalteten Servern eingerichtet. Auf jedem Server wird dasselbe EAR bereitgestellt. Das EAR enthält zwei Message-Driven Beans (MDB), die dasselbe verteilte JMS-Thema überwachen.Fehlende Nachricht von JMS Thema

Immer wenn eine Nachricht an das JMS-Thema gesendet wird, empfängt nur eine der MDBs es. Hat jemand einen Vorschlag, was die Ursache sein könnte? Ich vermute, dass es alle verschiedenen Konfigurationsoptionen sein können, die WebLogic für MDB-Themenabonnements hat, aber ich habe alles versucht, was mir ohne Erfolg einfällt.

Jede Hilfe wäre willkommen.

@MessageDriven für 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 für 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") 

Antwort

0

Ich denke, der folgende Auszug aus der weblogic documentation zum Thema auf Sie zutrifft (Hervorhebung von mir):

One-Copy-Per-Application topic MDBs, die dauerhaft sind, die ein lokales RDT abonnieren und die den Standardwert 10 für das Attribut distributedDestinationConnection verwenden, unterstützen die Dienstmigration nicht und erfordern, dass pro WebLogic Server-Instanz genau ein Zweigmember konfiguriert wird. Wenn eine Servicemigration auftritt, wenn kein lokales Topic-Mitglied konfiguriert ist, oder wenn mehr als ein Topic-Mitglied pro Server bereitgestellt wird, kann es zu doppelten oder verlorenen Nachrichten kommen, und es können auch abgebrochene Subskriptionen erstellt werden, die unverarbeitete Nachrichten ansammeln. Wenn eine Dienstmigration erforderlich ist, verwenden Sie die Option EveryMember für das Attribut distributedDestinationConnection anstelle des Standardwerts LocalOnly.

So dort haben Sie es: die einzige praktikable Kombination von Parametern für Ihre Einrichtung ist

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

Das funktionierte. Vielen Dank. –

+0

Gern geschehen @StevenP. – kolossus

Verwandte Themen