Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerJMS 用 Anypoint Connector (JMS Connector) には、ActiveMQ 5 のサポートを提供する ActiveMQ 接続設定が含まれています。この接続を使用して、JMS 1.1 (デフォルト)、JMS 1.0.2b、JMS 2.0 仕様を設定できます。また、JMS の全般的なすべての接続パラメーターだけでなく、ActiveMQ でのみ表示されるカスタムパラメーターも設定できます。
ActiveMQ 接続を宣言したら、目的の設定に合わせて接続ファクトリーをカスタマイズします。接続のすべてのパラメーターにはデフォルト値があります。つまり、自分のユースケースに関連するパラメーターのみを設定する必要があります。また、ActiveMQ 接続では [Initial redelivery delay (初期再配信遅延)] などの ActiveMQ 実装専用のパラメーターが公開されています。
次の例では、ActiveMQ 接続を設定します。
Studio で、[Global Elements (グローバル要素)] タブに移動します。
[Create (作成)] をクリックします。
検索条件ボックスに jms
と入力し、[JMS Config (JMS 設定)] を選択します。
[OK] をクリックします。
[Connection (接続)] 項目で [ActiveMQ Connection (ActiveMQ 接続)] を選択します。
[Factory configuration (ファクトリー設定)] 項目で、[Edit Inline (インライン編集)] を選択します。
[Broker url (ブローカー URL)] 項目値を、接続先のブローカーのアドレス (tcp://localhost:61616
など) に設定します。
[OK] をクリックします。
XML エディターでは、<jms:active-mq-connection>
および <jms:factory-configuration>
設定は次のように記述されます。
<jms:config name="JMS_Config">
<jms:active-mq-connection >
<jms:factory-configuration brokerUrl="tcp://localhost:61616" />
</jms:active-mq-connection>
</jms:config>
複数のノードでブローカー接続のログイン情報を同時に使用できない場合があります。その場合、Mule アプリケーションはリスナーの実行が 1 つのノードのみで行われるように、true
に設定された [Primary node only (プライマリノードのみ)] 項目を使用します。ただし、他のノードでログイン情報がすでに使用されている場合、デプロイメント前に実行される接続テストでプライマリノードのデプロイメントエラーが発生することがあります。この特定のケースでは、[ActiveMQ Connection - No Connectivity Test (ActiveMQ 接続 - 接続テストなし)] を使用します。これは、デプロイメント前の接続テストが実行されないという点を除き、[ActiveMQ Connection (ActiveMQ 接続)] と同じです。
次の例では、[ActiveMQ Connection - No Connectivity Test (ActiveMQ 接続 - 接続テストなし)] を設定します。
Studio で、[Global Elements (グローバル要素)] タブに移動します。
[Create (作成)] をクリックします。
検索条件ボックスに jms
と入力し、[JMS Config (JMS 設定)] を選択します。
[OK] をクリックします。
[Connection (接続)] 項目で [ActiveMQ Connection - No Connectivity Test (ActiveMQ 接続 - 接続テストなし)] を選択します。
省略可能な [Client id (クライアント ID)] 項目を設定します。
[Factory configuration (ファクトリー設定)] 項目で、[Edit Inline (インライン編集)] を選択します。
[Broker url (ブローカー URL)] 項目値を、接続先のブローカーのアドレス (tcp://localhost:61616
など) に設定します。
[OK] をクリックします。
XML エディターでは、<jms:active-mq-nct-connection>
および <jms:factory-configuration>
設定は次のように記述されます。
<jms:config name="JMS_Config">
<jms:active-mq-nct-connection clientId="my-mule-cli">
<jms:factory-configuration brokerUrl="tcp://localhost:61616" />
</jms:active-mq-nct-connection>
</jms:config>
JMS Connector はどの特定の実装にもバインドされていないため、何らかの接続種別を設定する場合は、常に JMS クライアント実装を含むライブラリを設定する必要があります。Studio のグローバル要素ビューで ActiveMQ 外部ライブラリを設定するか、pom.xml
ファイルにライブラリの連動関係を手動で追加します。
ActiveMQ KahaDB
activemq-kahadb-store
連動関係は VM トランスポート (vm://localhost?broker.persistent=true
など) に基づいて永続的なメモリ内ブローカーを使用する場合のみ必須です。この連動関係は、有効な org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter
実装を提供します。この連動関係は、永続的なメッセージ配信を行うためにも必須です。
Studio の pom.xml
ファイルでは、連動関係の追加は次のようになります。
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-kahadb-store</artifactId>
<version>5.14.4</version>
</dependency>
ActiveMQ ブローカー
activemq-broker
連動関係は VM トランスポート (デフォルトで設定される) に基づいてメモリ内ブローカーを使用する場合のみ必須です。この連動関係は、有効な org.apache.activemq.broker.Broker
実装を提供します。
Studio の pom.xml
ファイルでは、連動関係の追加は次のようになります。
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-broker</artifactId>
<version>5.14.4</version>
</dependency>
ActiveMQ クライアント
ActiveMQ 接続を使用するには、activemq-client
連動関係が常に必須です。有効な org.apache.activemq.ActiveMQConnectionFactory
実装を提供する連動関係を選択します。
Studio の pom.xml
ファイルでは、連動関係の追加は次のようになります。
+
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.14.4</version>
</dependency>
これらのライブラリを [Global Element (グローバル要素)] ビューで設定する手順は、次のとおりです。
Studio で、[Global Elements (グローバル要素)] タブに移動します。
[Create (作成)] をクリックします。
検索条件ボックスに jms
と入力し、[JMS Config (JMS 設定)] を選択します。
[OK] をクリックします。
[Connection (接続)] 項目で [ActiveMQ Connection (ActiveMQ 接続)] を選択します。
[ActiveMQ KahaDB]、[ActiveMQ Broker (ActiveMQ ブローカー)]、および [ActiveMQ Client (ActiveMQ クライアント)] ライブラリが表示されている [Required Libraries (必須のライブラリ)] セクションで [Configure… (設定…)] ボタンをクリックし、連動関係をインストールします。
次のインストールオプションのいずれかを選択します。
Add recommended library (推奨されるライブラリを追加): 推奨されるライブラリをインストールします。
Use local file (ローカルファイルを使用): ローカルファイルで必要なエンジンライブラリを探してインストールします。
Add Maven dependency (Maven 連動関係を追加): 連動関係を探してインストールします。
デフォルトでは、ActiveMQ 用 Anypoint Connector (ActiveMQ コネクタ) はメモリ内ブローカーを使用します。これにより、外部ブローカーに対して接続を設定することなくアプリケーションの作成を簡単に開始できるようになります。 メモリ内ブローカーは ActiveMQ KahaDB ライブラリと ActiveMQ ブローカーライブラリの両方を設定するために必要です。デフォルト URL は次のとおりです。
vm://localhost?broker.persistent=false&broker.useJmx=false
Studio でメモリ内ブローカーを設定する手順は、次のとおりです。
Studio で [JMS Config (JMS 設定)] グローバル要素ウィンドウを開きます。
[Connection Factory (接続ファクトリー)] セクションで [Factory configuration (ファクトリー設定)] 項目を [Edit inline (インライン編集)] に設定します。
[Broker url (ブローカー URL)] 項目を、接続するブローカーのアドレス (vm://localhost?broker.persistent=false&broker.useJmx=false
など) に設定します。
[OK] をクリックします。
XML エディターでは、brokerUrl
設定は次のように記述されます。
<jms:config name="JMS_Config" doc:name="JMS Config">
<jms:active-mq-connection >
<jms:factory-configuration brokerUrl="vm://localhost?broker.persistent=false&broker.useJmx=false"/>
</jms:active-mq-connection>
</jms:config>
メッセージを正しく処理できない場合、肯定応答されません。その後、メッセージは再配信され、やはり正しく処理されない可能性が高く、このサイクルは永久に実行されます。
メッセージが無限に再配信されないようにするには、[Max redelivery (最大再配信)] 項目を設定します。
デフォルトでは、JMS Connector では最大再配信の値として 0
が使用されます。つまり、メッセージが回復されたか、トランザクションからロールバックされたかに関係なく、メッセージは再配信されません。メッセージで永続的な配信が設定されている場合、ActiveMQ はメッセージを DLQ.QUEUE
(デッドレターキュー) に送信します。
ActiveMQ により、クライアント側の再配信を設定することもできます。
[Initial redelivery delay (初期再配信遅延)] 項目を使用すると、最初のメッセージを再配信するまで待機する時間 (ミリ秒) を設定できます。
[Redelivery delay (再配信遅延)] 項目では、最初の再配信の後、メッセージを次に再配信するまで待機する時間 (ミリ秒) を設定できます。
Studio でこれらの項目を設定する手順は、次のとおりです。
Studio で [JMS Config (JMS 設定)] グローバル要素ウィンドウを開きます。
[Connection Factory (接続ファクトリー)] セクションで [Factory configuration (ファクトリー設定)] 項目を [Edit inline (インライン編集)] に設定します。
[Initial redelivery delay (初期再配信遅延)] 項目を 1000
に設定します。
[Redelivery delay (再配信遅延)] 項目を 100
に設定します。
[Max redelivery (最大再配信)] 項目を 10
に設定します。
[OK] をクリックします。
XML エディターでは、maxRedelivery
、redeliveryDelay
、および initialRedeliveryDelay
の設定は次のように記述されます。
<jms:config name="JMS_Config">
<jms:active-mq-connection>
<jms:factory-configuration maxRedelivery="10"
redeliveryDelay="100"
initialRedeliveryDelay="1000"/>
</jms:active-mq-connection>
</jms:config>
ActiveMQ バージョン 5.12.2 および 5.13.0 以降では、逐次化および非逐次化できるクラスを制限しており、ホストシステムでの悪意のあるペイロードの実行を防ぐことができます。
ActiveMQ の場合、JMS Connector ではデフォルトで JDK および JRE 提供のクラスしか使用できません。そのため、オブジェクトメッセージを交換する必要がある場合は、[Trusted packages (信頼されるパッケージ)] 項目を有効にして、アプリケーションで使用しているパッケージを追加する必要があります。
[Trust All Packages (すべてのパッケージを信頼)] 項目を有効にし、任意のオブジェクトのシリアル化および非シリアル化を許可してより多くのクラスをシリアル化することもできますが、ほとんどの場合、無効のままにするよりも安全性は低くなります。セキュリティを高めて、悪意のある攻撃を防ぐには、このパラメーターを無効のままにしてください。
次の例では、com.mulesoft.someapp
および com.mulesoft.someapp.model
パッケージに準拠しているユーザーのみが ObjectMessages をコンシュームおよび生成できるように接続を設定します。
Studio で [JMS Config (JMS 設定)] グローバル要素ウィンドウを開きます。
[Connection Factory (接続ファクトリー)] セクションで [Factory configuration (ファクトリー設定)] 項目を [Edit inline (インライン編集)] に設定します。
[Trusted packages (信頼されるパッケージ)] 項目を選択します。
プラス記号をクリックして、新しいパッケージを追加します。
[Trusted package (信頼されるパッケージ)] ウィンドウで [Value (値)] 項目を com.mulesoft.someapp
に設定します。
[Finish (完了)] をクリックします。
ステップ 4 を繰り返します。
[Trusted package (信頼されるパッケージ)] ウィンドウで [Value (値)] 項目を com.mulesoft.someapp.model
に設定します。
[Finish (完了)] をクリックします。
[Trust all packages (すべてのパッケージを信頼)] 項目を選択します。
[OK] をクリックします。
XML エディターでは、<jms:trusted-packages>
および trustAllPackages
の設定は次のように記述されます。
<jms:config name="JMS_Config">
<jms:active-mq-connection>
<jms:factory-configuration trustAllPackages="true">
<jms:trusted-packages >
<jms:trusted-package value="com.mulesoft.someapp" />
<jms:trusted-package value="com.mulesoft.someapp.model" />
</jms:trusted-packages>
</jms:factory-configuration>
</jms:active-mq-connection>
</jms:config>
JMS Connector バージョン 1.3.0 以降では、SSL 設定を使用して ActiveMQ 接続を設定し、ActiveMQ ブローカーに対して安全で暗号化された接続を確立できます。
Studio で、[Global Elements (グローバル要素)] タブに移動します。
[Create (作成)] をクリックします。
検索条件ボックスに jms
と入力し、[JMS Config (JMS 設定)] を選択します。
[OK] をクリックします。
[Connection (接続)] 項目で [ActiveMQ Connection (ActiveMQ 接続)] を選択します。
[TLS/SSL] タブに移動します。
[TLS Configuration (TLS 設定)] 項目で、[Edit Inline (インライン編集)] を選択します
[Trust Store Configuration (トラストストア設定)] セクションで、次の項目を設定します。
Path (パス): client.ts
Password (パスワード): password
[Key Store Configuration (キーストア設定)] セクションで、次の項目を設定します。
Path (パス): client.ks
Alias (別名): client
Key Password (キーパスワード): password
Password (パスワード): password
[OK] をクリックします。
XML エディターでは、<jms:active-mq-connection>
、<tls:trust-store>
、および <tls:key-store>
の設定は次のように記述されます。
<jms:config name="JMS_Config">
<jms:active-mq-connection>
<tls:context>
<tls:trust-store
path="client.ts"
password="password" />
<tls:key-store
path="client.ks"
password="password"
keyPassword="password"
alias="client" />
</tls:context>
</jms:active-mq-connection>
</jms:config>
JMS Connector でグローバル TLS コンテキスト設定を参照し、次の例のように、HTTP 用 Anypoint Connector (HTTP Connector) を使用してコネクタ間で同じ TLS コンテキストを再利用して共有することもできます。
<!-- HTTP Requester Configuration -->
<http:request-config name="HTTP_Request_configuration">
<http:request-connection tlsContext="TLS_Context" />
</http:request-config>
<!-- JMS Configuration -->
<jms:config name="JMS_Config">
<jms:active-mq-connection tlsContext="TLS_Context"/>
</jms:config>
<!-- Reusable TLS Context -->
<tls:context name="TLS_Context">
<tls:trust-store
path="client.ts"
password="password" />
<tls:key-store
path="client.ks"
password="password"
keyPassword="password"
alias="client" />
</tls:context>