65.16. 相互運用性
65.16.1. JMS リンクのコピーリンクがクリップボードにコピーされました!
Kafka と JMS を相互運用する場合、JMS ヘッダーを期待される型に強制変換する必要がある場合があります。
たとえば、JMS ヘッダーが含まれるメッセージを Kafka から受信し、それを JMS ブローカーに送信する場合、それらのヘッダーは最初にバイト配列にデシリアライズされます。次に、camel-jms コンポーネントは、このバイト配列を使用される特定の型に強制変換しようとします。ただし、元のエンドポイントと、コード上でどのように設定されているかにより、データのシリアライズとデシリアライズの方法が影響を受ける可能性があります。そのため、バイト配列のデータ型を単純に想定することは現実的ではありません。
この問題に対処するために、Kafka が JMS 仕様に従って JMS データを強制的にデシリアライズできるようにするカスタムヘッダーデシリアライザーを提供します。このアプローチにより、ヘッダーは camel-jms コンポーネントによって適切に解釈され、処理されます。
それぞれのシステムとエンドポイントには固有の複雑さがあるため、このデシリアライザーがすべてのシナリオをカバーできるとは限りません。そのため、各アプリケーションの特定のニーズに合わせて変更や適応が可能なモデルとして提供されます。
このソリューションを利用するには、headerDeserializer オプションを追加して、パイプラインのコンシューマー側のルート URI を変更する必要があります。以下に例を示します。
from("kafka:topic?headerDeserializer=#class:org.apache.camel.component.kafka.consumer.support.interop.JMSDeserializer")
.to("...");