2.40. JMS
JMS Queue または Topic との間でメッセージを送受信します。
2.40.1. 含まれるもの リンクのコピーリンクがクリップボードにコピーされました!
-
JMS コンポーネント、URI 構文:
jms:destinationType:destinationName
使用方法と設定の詳細については、上記リンクを参照してください。
2.40.2. Maven コーディネート リンクのコピーリンクがクリップボードにコピーされました!
code.quarkus.redhat.com でこのエクステンションを使用して新しいプロジェクトの作成
または、既存のプロジェクトに座標を追加します。
<dependency> <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-jms</artifactId> </dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-jms</artifactId>
</dependency>
2.40.3. Usage リンクのコピーリンクがクリップボードにコピーされました!
2.40.3.1. org.w3c.dom.Node を使用したメッセージマッピング リンクのコピーリンクがクリップボードにコピーされました!
Camel JMS コンポーネントは、javax.jms.Message
および org.apache.camel.Message
間のメッセージマッピングをサポートします。Camel メッセージ本文タイプ org.w3c.dom.Node
を変換する場合は、camel-quarkus-jaxp
エクステンションがクラスパスに存在することを確認する必要があります。
2.40.3.2. javax.jms.ObjectMessage のネイティブモードのサポート リンクのコピーリンクがクリップボードにコピーされました!
JMS メッセージペイロードを javax.jms.ObjectMessage
として送信する場合、シリアル化のために登録する関連クラスに @RegisterForReflection (serialization = true)
でアノテーションを付ける必要があります。このエクステンションは、quarkus.camel.native.reflection.serialization-enabled = true
を自動的に設定することに注意してください。詳細は、ネイティブモードのユーザーガイド を参照してください。
2.40.3.3. 接続プーリングと X/Open XA 分散トランザクションのサポート リンクのコピーリンクがクリップボードにコピーされました!
Quarkus 向けの Camel 拡張機能のこのリリースでは、接続プーリングは、テクニカルプレビュー機能となっています。
camel-quarkus-jms
コンポーネントで接続プールを使用するには、io.quarkiverse.artemis:quarkus-artemis
および io.quarkiverse.messaginghub:quarkus-pooled-jms
を pom.xml に追加し、次の設定を指定する必要があります。
quarkus.pooled-jms.max-connections = 8
quarkus.pooled-jms.max-connections = 8
quarkus-pooled-jms
エクステンションを使用して、JMS 接続のプーリングと XAのサポートを得ることができます。詳細は、quarkus-pooled-jms エクステンションドキュメントを参照してください。現在、quarkus-artemis-jms
拡張でのみ動作します。これら 2 つの依存関係を pom.xml
に追加するだけです。
プーリングはデフォルトで有効になっていることに注意してください。
XA を有効にするには、次の設定を application.properties
に追加する必要があります。
quarkus.pooled-jms.xa.enabled=true
quarkus.pooled-jms.xa.enabled=true
プーリング接続では、clientID
と durableSubscriptionName
はサポートされていません。プールから reused
された接続で setClientID
が呼び出されると、IllegalStateException
が出力されます。次のようなエラーメッセージが表示されます。Cause: setClientID can only be called directly after the connection is created
2.40.4. ネイティブモードの transferException オプション リンクのコピーリンクがクリップボードにコピーされました!
ネイティブモードで transferException
オプションを使用するには、オブジェクトのシリアル化のサポートを有効にする必要があります。詳細は、ネイティブモードのユーザーガイド を参照してください。
また、シリアル化する予定の例外クラスのシリアル化を有効にする必要があります。以下に例を示します。
@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)
@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)