検索

179.7. JMS と Camel 間のメッセージマッピング

download PDF

Camel は javax.jms.Messageorg.apache.camel.Message の間でメッセージを自動的にマップします。

JMS メッセージを送信するとき、Camel はメッセージ本文を次の JMS メッセージタイプに変換します。

ボディタイプJMS MessageComment

String

javax.jms.TextMessage

 

org.w3c.dom.Node

javax.jms.TextMessage

DOM は String に変換されます。

Map

javax.jms.MapMessage

 

java.io.Serializable

javax.jms.ObjectMessage

 

byte[]

javax.jms.BytesMessage

 

java.io.File

javax.jms.BytesMessage

 

java.io.Reader

javax.jms.BytesMessage

 

java.io.InputStream

javax.jms.BytesMessage

 

java.nio.ByteBuffer

javax.jms.BytesMessage

 

JMS メッセージを受信すると、Camel は JMS メッセージを次のボディタイプに変換します。

JMS Messageボディタイプ

javax.jms.TextMessage

String

javax.jms.BytesMessage

byte[]

javax.jms.MapMessage

Map<String, Object>

javax.jms.ObjectMessage

Object

179.7.1. JMS メッセージの自動マッピングの無効化

mapJmsMessage オプションを使用して、上記の自動マッピングを無効にすることができます。無効にすると、Camel は受信した JMS メッセージをマップしようとせず、ペイロードとして直接使用します。これにより、マッピングのオーバーヘッドを回避し、Camel に JMS メッセージを通過させることができます。たとえば、クラスパスに ない クラスを使用して javax.jms.ObjectMessage JMS メッセージをルーティングすることもできます。

179.7.2. カスタム MessageConverter の使用

messageConverter オプションを使用して、Spring org.springframework.jms.support.converter.MessageConverter クラスで自分でマッピングを行うことができます。

たとえば、以下のルートでは、メッセージを JMS オーダーキューに送信するときにカスタムメッセージコンバーターを使用します。

from("file://inbox/order").to("jms:queue:order?messageConverter=#myMessageConverter");

JMS 宛先から消費する場合は、カスタムメッセージコンバーターを使用することもできます。

179.7.3. 選択したマッピング戦略の制御

エンドポイント URL で jmsMessageType オプションを使用して、すべてのメッセージに対して特定のメッセージタイプを強制することができます。

以下のルートでは、フォルダーからファイルをポーリングし、それらを javax.jms.TextMessage として送信します。これは、JMS producer エンドポイントにテキストメッセージの使用を強制したためです。

from("file://inbox/order").to("jms:queue:order?jmsMessageType=Text");

キー CamelJmsMessageType でヘッダーを設定することにより、各メッセージに使用するメッセージタイプを指定することもできます。以下に例を示します。

from("file://inbox/order").setHeader("CamelJmsMessageType", JmsMessageType.Text).to("jms:queue:order");

可能な値は enum 型クラス org.apache.camel.jms.JmsMessageType で定義されています。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.