1

Spring Integration と Spring Integration AMQP に使用しようとしている次の XML ペイロードがあります。

<?xml version="1.0" encoding="UTF-8"?>
<order>
   <items>
      <item_name>Item1</item_name>
   </items>
   <items>
      <item_name>Item2</item_name>
   </items>
   <items>
      <item_name>Item3</item_name>
   </items>
</order>

xpath-splitter を使用してメッセージを分割しています。

<int-xml:xpath-splitter input-channel="amqpInboundChannel" output-channel="aggregateChannel">
    <int-xml:xpath-expression expression="//items"></int-xml:xpath-expression>
</int-xml:xpath-splitter>

私は正常に動作し、メッセージは次のペイロードを使用して 3 つの新しいメッセージに分割されています。

<?xml version="1.0" encoding="UTF-8"?>
<items>
   <item_name>Item1</item_name>
</items>

この手順の後、メッセージは次のセットアップを使用して集約されます。

<int:aggregator input-channel="aggregateChannel" output-channel="channelSJ" message-store="messageStore">
</int:aggregator>

<bean id="messageStore" class="org.springframework.integration.store.SimpleMessageStore" />

最後のステップとして、メッセージはこの outbound-channel-adapter を使用して取引所に送信されています。

<amqp:outbound-channel-adapter channel="channelSJ" exchange-name="ex_store" routing-key="sj" amqp-template="rabbitTemplate" header-mapper="myHeaderMapper"/>

<int:channel id="channelSJ">
    <int:interceptors>
        <int:wire-tap channel="logger"/>
    </int:interceptors>      
</int:channel>

残念ながら、このペイロードのようなものになってしまうため、何か問題が発生します。XML 形式のままにしておく必要があります。

ここに画像の説明を入力

4

1 に答える 1

1

CollectionAMQP アダプタに文字列を送信しています。

デフォルトでは、そのアダプターはStringbyte[]およびのみを処理できSerializableます。この場合、彼は Java シリアライゼーションを使用しCollectionますSerializable

いくつかのオプションがあります...

  • JsonMessageConverterアダプターでa を使用するamqp-templateと、コレクションは JSON としてレンダリングされます。
  • アグリゲーターとアダプターの間にトランスフォーマーを追加して、コレクションを単一の に変換しStringます。
于 2013-11-05T18:50:05.803 に答える