呼び出し時にメッセージの本文を pojo にアンマーシャリングするのに本当に苦労しています。
本文をカスタム pojo にアンマーシャリングすることで定義されている非常に単純なルートがあります。
<dataFormats>
<json id="json" library="Jackson" unmarshalTypeName="com.trumin.domain.model.result.Result" />
</dataFormats>
<camel:route>
<camel:from
uri="activemq:topic:result?clientId=sswric_01&durableSubscriptionName=sendSMSWhenResultIsCalculated" />
<marshal ref="json" />
<bean beanType="com.trumin.communications.sms.TimeResultSMSSender"
method="sendTextToUserAfterTimeResultBeingSaved(${body})" />
</camel:route>
</camelContext>
ここで呼び出そうとしているメソッド:
sendTextToUserAfterTimeResultBeingSaved(Result r);
json データ形式で定義されているタイプ Result のパラメーターを受け取り、メッセージが配信されたときに呼び出されません。
結果の代わりに文字列を受け入れるようにメソッド シグネチャを変更すると、次のようになります。
sendTextToUserAfterTimeResultBeingSaved(String s);
次に呼び出され、文字列には結果のjson表現が含まれます。
私が達成しようとしていることが機能する方法はありますか?
また、ルートから (${body}) 仕様を削除しようとしました。他のアンマーシャル ライブラリを試しました。すべてのキャメル チュートリアルとパラメーター バインディングへのリンクを読んでみました。キャメルのほとんどを読みましたこれに関するアクションの章ですが、まだ私の答えが見つかりません。