Die Stapelumgebung kann so eingerichtet werden, dass einige Server als Stapeldispatcher fungieren und andere Server als Stapelexecutor.
Stapeldispatcher akzeptieren Anforderungen von externen Clients und stellen sie für die Stapelexecutor bereit.
Die Stapelexecutor empfangen Anforderungen, die ihrer definierten Funktionalität entsprechen, und führen diese Anforderungen aus.
Stapeldispatcher und Stapelexecutor kommunizieren über
Java Messaging Service (JMS) miteinander.
Vorbereitende Schritte
Stellen Sie fest, wo die eingebettete Messaging-Engine gehostet wird. Sie kann auf dem Server gehostet werden, der als Stapeldispatcher fungiert,
auf dem Stapelexecutor oder auf einem separaten Server. Dieser Server muss konfiguriert werden, bevor Sie diese Task ausführen.
Der Server mit der Messaging-Engine wird in der Konfiguration der
JMS-Verbindungsfactory und der Aktivierungsspezifikation referenziert.
Gehen Sie wie folgt vor, um die Messaging-Engine zu konfigurieren:
- Fügen Sie das Feature wasJmsServer-1.0 zur Datei server.xml hinzu.
- Definieren Sie die Messaging-Engine, indem Sie
das Element messageEngine hinzufügen.
Definieren Sie die Warteschlange, die für den Stapeldispatcher
und den Stapelexecutor verwendet wird.
Das folgende Beispiel zeigt die Konfiguration der Messaging-Engine in der Datei
server.xml.
<!-Geben Sie die Ports für die Messaging-Engine an.
Die Ports in diesem Beispiel sind die Standardports.
Dieses Element wird nicht benötigt, wenn die Standardports verwendet werden. -->
<wasJmsExecutor host="*"
wasJmsPort="7280"
wasJmsSSLPort="7290"
enabled="true">
</wasJmsExecutor>
<messagingEngine>
<!- Warteschlange für JMS-Stapelnachricht. -->
<queue id="batchLibertyQueue"
forceReliability="ReliablePersistent"
receiveAllowed="true"/>
</messagingEngine>
Informationen zu diesem Vorgang
Diese Task unterstützt Sie bei der Konfiguration des Servers für den Stapeldispatcher und den Stapelexecutor unter Verwendung des
integrierten Messaging-Providers des Liberty-Profils.
Vorgehensweise
Gehen Sie wie folgt vor, um den Stapeldispatcher und den Stapelexecutor unter Verwendung des integrierten Messaging-Provider des Liberty-Profils zu konfigurieren:
- Konfigurieren Sie den JMS-Stapeldispatcher.
- Fügen Sie der Datei server.xml das Feature
wasJmsClient-2.0 hinzu, um die JMS-Unterstützung zu aktivieren.
- Fügen Sie der Datei server.xml auf dem Server, der den Stapeldispatcher hostet,
das Element batchJmsDispatcher hinzu.
<batchJmsDispatcher connectionFactoryRef={Referenz auf eine konfigurierte JMS-Verbindungsfactory}
queueRef={Referenz auf eine konfigurierte JMS-Warteschlange} />
Anmerkung: Wenn Sie die Attribute connectionFactoryRef und queueRef nicht angeben,
wird für connectionFactoryRef der Standardwert
batchConnectionFactory und für
queueRef der Standardwert
batchJobSubmissionQueue verwendet.
Von daher können Sie
das Element batchJmsDispatcher als
<batchJmsDispatcher /> angeben.
Die JMS-Verbindungsfactory
batchConnectionFactory und die JMS-Warteschlange
batchJobSubmissionQueue müssen trotzdem in der Datei
server.xml konfiguriert werden.
- Nehmen Sie die entsprechende JMS-Verbindungsfactory und JMS-Warteschlange in die Serverkonfiguration auf.
Dies ist nicht spezifisch für die Stapelkonfiguration. Das folgende Beispiel zeigt die Konfiguration des JMS-Stapeldispatchers und die zugehörige JMS-Konfiguration.
Anmerkung: Das Attribut remoteServerAddress verweist auf den Host:Port des Servers, auf dem die Messaging-Engine
des Liberty-Profils gehostet wird.
<batchJmsDispatcher connectionFactoryRef="batchConnectionFactory"
queueRef="batchJobSubmissionQueue" />
<jmsConnectionFactory id="batchConnectionFactory"
jndiName="jms/batch/connectionFactory">
<properties.wasJms remoteServerAddress="host:7280:BootstrapBasicMessaging">
</properties.wasJms>
</jmsConnectionFactory>
<jmsQueue id='batchJobSubmissionQueue"
jndiName="jms/batch/jobSubmissionQueue">
<properties.wasJms deliveryMode="Persistent"
queuename="batchLibertyQueue">
</properties.wasJms>
</jmsQueue>
- Konfigurieren Sie den JMS-Stapelexecutor.
- Fügen Sie der Datei server.xml das Feature
wasJmsClient-2.0 hinzu, um die JMS-Unterstützung zu aktivieren.
- Fügen Sie der Datei
server.xml auf dem Server, der den Stapelexecutor hostet, das Element
batchJmsExecutor hinzu.
<batchJmsExecutor activationSpecRef={konfigurierte Aktivierungsspezifikation oder Stapelexecutor}
queueRef={Referenz auf die konfigurierte JMS-Warteschlange} />
Anmerkung: Wenn Sie die Attribute
activationSpecRef und queueRef nicht angeben,
wird für activationSpecRef der Standardwert
batchActivationSpec und für
queueRef der Standardwert batchJobSubmissionQueue verwendet.
Von daher können Sie
das Element batchJmsExecutor als
<batchJmsExecutor /> angeben.
Die JMS-Aktivierungsspezifikation für
batchActivationSpec und die JMS-Warteschlange
batchJobSubmissionQueue müssen trotzdem in der Datei
server.xml konfiguriert werden.
- Nehmen Sie die entsprechende JMS-Aktivierungsspezifikation und JMS-Warteschlange in die Serverkonfiguration auf.
Dies ist nicht spezifisch für die Stapelkonfiguration.
- Definieren Sie Leistungsmerkmale des Stapelexecutor-Servers,
indem Sie in die Aktivierungsspezifikation einen JMS-Nachrichtenselektor aufnehmen.
- Filterung auf der Basis systemdefinierter Eigenschaften:
Für die JMS-Stapelnachricht sind eine Reihe von Stapeldispatchereigenschaften verfügbar, die
der Stapelexecutor zum Filtern ankommender Nachrichten verwenden kann.
- com_ibm_ws_batch_applicationName:
Der Name der Stapelanwendung für die Jobanforderung.
- com_ibm_ws_batch_moduleName: Der Modulname
der Stapelanwendung für die Jobanforderung.
- com_ibm_ws_batch_componentName:
Der Komponentenname der Stapelanwendung für die Jobanforderung.
Anmerkung: Es wird empfohlen, zumindest mit der Eigenschaft
com_ibm_ws_batch_applicationName einen Nachrichtenselektor anzuegeben,
um sicherzustellen, dass der Executor nur Jobs empfängt, die er verarbeiten kann.
Im folgenden Beispiel legt das Attribut
messageSelector für den Executor
fest, dass ein Job für die Anwendungen
SimpleBatchJob und
BonusPayout akzeptiert werden soll.
messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayout'">
Im folgenden Beispiel
legt das Attribut
messageSelector für den Executor fest,
dass ein Job für die Anwendung
SimpleBatchJob akzeptiert werden soll.
messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob'">
- Filterung auf der Basis benutzerdefinierter Eigenschaften:
Der Stapeldispatcher
legt alle Jobparameter, die der richtigen JMS-Nachrichteneigenschaft entsprechen, in seiner Anforderungsnachricht fest.
Diese Eigenschaften können vom Nachrichtenselektor ebenfalls verwendet werden, um eine zusätzliche Filterung hinzuzufügen.
Der Eigenschaftsname oder die Eigenschafts-ID muss die Bedingungen einer JMS-Nachrichteneigenschaft erfüllen.
Beispielsweise ist die Eigenschaft eine unbegrenzte Folge von Buchstaben und Ziffern, wobei das erste Zeichen ein Buchstabe sein muss.
Ein Buchstabe ist ein Zeichen, für das die Methode
Character.isJavaLetter den Wert
true zurückgibt und umfasst auch
die Zeichen "_" und "$". Ein Buchstabe oder eine Ziffer ist ein Zeichen,
für das die Methode
Character.isJavaLetterOrDigit den Wert
true zurückgibt.
Weitere Informationen zu JMS-Nachrichtenselektoren
finden Sie in der JMS-Javadoc.
Im folgenden Beispiel verwendet ein potenzieller Nachrichtenselektor
die Eigenschaft
com_ibm_ws_batch_applicationName
und den Jobparameter
specialCapability.
messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND specialCapability = 'superCapability'">
Das folgende Beispiel zeigt die Konfiguration des JMS-Stapelexecutors und die zugehörige JMS-Konfiguration.
<batchJmsExecutor activationSpecRef="batchActivationSpec"
queueRef="batchJobSubmissionQueue"/>
<jmsActivationSpec id="batchActivationSpec" >
<properties.wasJms destinationRef="batchJobSubmissionQueue"
messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayoutCDI'"
destinationRef="batchJobSubmissionQueue"
destinationType="javax.jms.Queue"
remoteServerAddress="host:7280:BootstrapBasicMessaging">
</properties.wasJms>
</jmsActivationSpec>
<jmsQueue id="batchJobSubmissionQueue"
jndiName="jms/batch/jobSubmissionQueue">
<properties.wasJms deliveryMode="Persistent"
queueName="batchLibertyQueue">
</properties.wasJms>
</jmsQueue>
- Installieren Sie die Stapelanwendung auf dem Server. Weitere Informationen hierzu finden Sie unter
Anwendungen im Liberty-Profil implementieren.