306.7. 追記

306.7.1. メッセージヘッダーの形式

SJMS コンポーネントは、Camel JMS コンポーネントで使用されるのと同じヘッダー形式戦略を使用します。このプラグ可能な戦略により、ネットワーク経由で送信されるメッセージが JMS メッセージ仕様に準拠することが保証されます。

exchange.in.header の場合、次のルールがヘッダーキーに適用されます。

  • JMS または JMSX で始まるキーは予約されています。
  • exchange.in.headers キーはリテラルで、すべて有効な Java 識別子である必要があります (キー名にドットを使用しないでください)。
  • Camel は、JMS メッセージを消費するときにドットとハイフンを置き換え、その逆を行います。

    • Camel がメッセージを消費するときは、DOT と逆の置換に置き換えられます。
    • Camel がメッセージを消費するときは、HYPHEN と逆の置換に置き換えられます。
      オプション jmsKeyFormatStrategy も参照してください。これにより、キーのフォーマットに独自のカスタム戦略を使用できます。

exchange.in.header の場合、次のルールがヘッダー値に適用されます。

306.7.2. メッセージ内容

ネットワーク経由でコンテンツを配信するには、配信されるメッセージの本文が JMS メッセージ仕様に準拠していることを確認する必要があります。したがって、生成されるものはすべて、プリミティブまたはそのカウンターオブジェクト (IntegerLongCharacter など) のいずれかでなければなりません。タイプ StringCharSequenceDateBigDecimal、および BigInteger はすべて、それらの toString() 表現に変換されます。他のすべてのタイプはドロップされます。

306.7.3. クラスタリング

クラスター化された環境で SJMS で InOut を使用する場合は、TemporaryQueue 宛先を使用するか、InOut プロデューサーエンドポイントごとに宛先への一意の名前付きレスポンスを使用する必要があります。メッセージ相関は、ブローカーのメッセージセレクターではなく、エンドポイントによって処理されます。InOut プロデューサエンドポイントは、メッセージ JMSCorrelationID によってキャッシュされた Java Concurrency Exchangers を使用します。これにより、パフォーマンスが大幅に向上し、ブローカーのオーバーヘッドが削減されます。これは、すべてのメッセージが、関心のあるコンシューマーによって生成された順序で宛先から消費されるためです。

現在、唯一の相関ストラテジーは JMSCorrelationId を使用することです。InOut Consumer はこのストラテジーを使用し、含まれている JMSReplyTo 宛先へのすべてのレスポンスメッセージにも、リクエストからコピーされた JMSCorrelationId が含まれるようにします。