308.7. 追記
308.7.1. メッセージヘッダーの形式
SJMS2 コンポーネントは、Camel JMS コンポーネントで使用されるのと同じヘッダー形式ストラテジーを使用します。このプラグ可能な戦略により、ネットワーク経由で送信されるメッセージが JMS メッセージ仕様に準拠することが保証されます。
exchange.in.header
の場合、次のルールがヘッダーキーに適用されます。
-
JMS
またはJMSX
で始まるキーは予約されています。 -
exchange.in.headers
キーはリテラルで、すべて有効な Java 識別子である必要があります (キー名にドットを使用しないでください)。 Camel は、JMS メッセージを消費するときにドットとハイフンを置き換え、その逆を行います。
- Camel がメッセージを消費するときは、DOT と逆の置換に置き換えられます。
-
Camel がメッセージを消費するときは、HYPHEN と逆の置換に置き換えられます。
オプションjmsKeyFormatStrategy
も参照してください。これにより、キーのフォーマットに独自のカスタム戦略を使用できます。
exchange.in.header
の場合、次のルールがヘッダー値に適用されます。
308.7.2. メッセージ内容
ネットワーク経由でコンテンツを配信するには、配信されるメッセージの本文が JMS メッセージ仕様に準拠していることを確認する必要があります。したがって、生成されるものはすべて、プリミティブまたはそのカウンターオブジェクト (Integer
、Long
、Character
など) のいずれかでなければなりません。タイプ String
、CharSequence
、Date
、BigDecimal
、および BigInteger
はすべて、それらの toString()
表現に変換されます。他のすべてのタイプはドロップされます。
308.7.3. クラスタリング
クラスター化された環境で SJMS2 と一緒に InOut を使用する場合、TemporaryQueue 宛先を使用するか、InOut プロデューサエンドポイントごとに宛先への一意の名前付き応答を使用する必要があります。メッセージ相関は、ブローカーのメッセージセレクターではなく、エンドポイントによって処理されます。InOut プロデューサエンドポイントは、メッセージ JMSCorrelationID
によってキャッシュされた Java Concurrency Exchangers を使用します。これにより、パフォーマンスが大幅に向上し、ブローカーのオーバーヘッドが削減されます。これは、すべてのメッセージが、関心のあるコンシューマーによって生成された順序で宛先から消費されるためです。
現在、唯一の相関ストラテジーは JMSCorrelationId
を使用することです。InOut Consumer はこのストラテジーを使用し、含まれている JMSReplyTo
宛先へのすべてのレスポンスメッセージにも、リクエストからコピーされた JMSCorrelationId
が含まれるようにします。