NServiceBus 2.0では、特定のメッセージタイプのシリアライザーを定義できますか?
1つを除くすべてのメッセージをXmlSerializerを使用してシリアル化する必要があります。残りの1つは、BinarySerializerを使用してシリアル化する必要があります。
NServiceBus 2.0で可能ですか?
NServiceBus 2.0では、特定のメッセージタイプのシリアライザーを定義できますか?
1つを除くすべてのメッセージをXmlSerializerを使用してシリアル化する必要があります。残りの1つは、BinarySerializerを使用してシリアル化する必要があります。
NServiceBus 2.0で可能ですか?
シリアライザーはエンドポイントベースで指定されていると思います。そのため、そのエンドポイントを使用するすべてのメッセージは同じシリアライザーを使用します。
ただし、エンドポイント/キューごとに1つのメッセージタイプというRote NServiceBusの推奨事項に従うと、1つのメッセージタイプを効果的に分離し、別のシリアライザーを使用できます。
興味がありますが、バイナリシリアル化が必要な1つのメッセージタイプの何が特別なのですか?
コメントに応じて編集する
ディストリビューター情報は、ディストリビューターを使用したルーティングでこれを間接的に言及しています。Udi Dahanは、NServiceBus Yahoo Groupでも頻繁にこれをアドバイスしていますが、検索が不十分なためリンクを提供することは困難です。
基本的に、優先度の高いメッセージが優先度の低いメッセージの後ろに詰まらないようにするという考え方です。また、これにより、必要に応じて特定のメッセージ処理をスケールアウトするための最大の柔軟性が得られます。
MsmqTransportConfigでは1つのInputQueueしか指定できないため、キューごとに1つのメッセージタイプがあるということは、エンドポイントごとに1つのメッセージハンドラーしかないことも意味します。
画像をアドレス指定するために、バイト配列をBase64でエンコードされた文字列としてエンコードすると、XML形式のメッセージに画像をカプセル化できる場合があります。理想的ではありませんが、画像が大きすぎない場合は、1つのメッセージタイプのみで別のシリアライザーを使用するという問題に取り組むよりも、これを行う方が簡単な場合があります。
もう1つのオプションは、画像データを帯域外でデータベースまたはファイルシステムに保存し、IDまたはパスで(それぞれ)参照することです。
バージョン2では不可能ですが、バージョン5以降のパイプラインを使用して実行できますhttp://docs.particular.net/samples/pipeline/multi-serializer/