4

真のメッセージングについて読んだことがありますが、バスでペイロードを送信する代わりに、識別子を送信します。私たちの場合、多くのレガシー アプリ/サービスがあり、それらは 4 MB に近いメッセージ (xml) のペイロードを受信するように設計されています (MSMQ 制限に近い)。nService バスが大きなペイロードを処理し、メッセージを自動的に永続化する方法または別の回避策はありますか?ペイロード?前もって感謝します。

4

3 に答える 3

1

メッセージを圧縮する簡単な「修正」をいつでも使用できます。

バイナリ シリアライザーでシリアル化された POCO は、大幅に圧縮できます。20 MB のメッセージが 3.1 MB に圧縮されていることがわかりました。

したがって、メッセージが 4 MB 前後でホバリングしている場合、送信中にメッセージを自動的に圧縮する IMessageSerializer を作成するだけで簡単な場合があります。

于 2010-06-17T15:30:40.253 に答える
1

メッセージ シーケンスパターンを使用できます。NServiceBus では、送信側でペイロードを分割し、チャンクをカスタム 'Sequence' IMessage でラップしてから、反対側にサガを実装してチャンクを抽出し、再構築します。エラー処理とタイムアウトに少し力を入れる必要があります。

于 2010-05-20T01:02:27.340 に答える
0

帯域外のメッセージに余分なデータを関連付ける NServiceBus の内部機能については知りません。

あなたは正しいと思います-ペイロード全体が制限内に収まらない場合は、自分で別の場所に永続化してから ID を渡す方がよいでしょう。

ただし、メッセージが IHasPayload インターフェイスを実装できるようにメッセージ構造を設計することは可能かもしれません (ID とタイプを組み込む可能性がありますか?)。その後、アプリケーション ロジックは、指定されたペイロードを取得するための共通のメソッドを持つことができます。 IHasPayload メッセージ。

于 2010-05-04T15:07:13.990 に答える