0

私は、MassTransitを使用してマイクロサービスコマンドを送受信しています。ローカルで(Azure Service Busインスタンスにリモートで接続して)実行すると、送受信が正常に行われます。例えば。ローカルコンソールアプリケーションからリモートServiceBusキュー(Service Bus Explorer 3.0.4で見ることができます)にコマンドを送信し、ローカルのTopShelfサービスがコマンドを受信して​​処理します。エラーで述べたようにない1.8メガバイト確かAzureサービスバス上のMassTransitはMessageSizeExceededExceptionをスローします

Microsoft.ServiceBus.Messaging.MessageSizeExceededException: The received message (delivery-id:0, size:1904586 bytes) exceeds the limit (262144 bytes) currently allowed on the link. 

は、私は1つのメッセージのみを送信していて、メッセージはかなり大きいですが、私は私のサービスを展開するときしかし、それは次のエラーで失敗しました! 100KBを少し上回っています。

私はthis post regarding batch partitioning of messagesを見つけましたが、それは複数のメッセージを小さなグループのメッセージに分割したい場合にのみ関係しています。私はただ一つのメッセージを送るだけです。また、私はMassTransitの文書を実際にどのように見つけることができません。 cfg.BatchFlushInterval = TimeSpan.FromSeconds(0.05);

  1. それは私のメッセージはそんなに大きなされていると考えて、なぜ誰かが説明することができます:私はこのようなIServiceBusHostConfiguratorを設定しようとしましたか?
  2. 単一のメッセージをより小さなパーティションに分割できますか?または、別の解決策がありますか?
  3. パーティショニングを完全に無効にする必要がありますか?もしそうなら、どうですか?
+0

https://groups.google.com/forum/#!forum/masstransit-discuss – stuartd

+0

@stuartdで質問していただきありがとうございます。このフォーラムに同じ質問を投稿しました。 Googleグループの仕組みがわからない - 査読などが必要な場合もありますが、自分の質問はどこにも表示されません。私は確かめるためにもう一度投稿しましたが、 "POST"をクリックするとそれが消えてホームページにリダイレクトされます。 – hofnarwillie

答えて

0

サービスバスにはメッセージの制限が256kであり、メッセージ本体自体を囲むシリアル化エンベロープが含まれています。エラーで1.9MBのメッセージサイズが表示されている場合は、かなり大きなメッセージを表示していることになります。

あなたのメッセージサイズをより詳しく見ると、添付ファイルやバイナリデータがメッセージにある場合は、MessageData<>機能を使用してバイナリペイロードを帯域外に送信することを検討してください。

+0

ありがとうございます。 Service Bus Explorerを使用してメッセージを表示すると、「サイズ」は「106330」と表示されます。 JSON本体のサイズをチェックすると、それよりも少し小さい(エンベロープを含む予想サイズと相関する)ため、バイトを参照していると仮定します。ですから私の質問はまだ立っています、なぜそれはメッセージが1.9MBだと思いますか?添付ファイルはなく、バイナリデータもありません。 – hofnarwillie

+0

AzureのService Busでうまく動作するCloud Servicesとして、Azureで多くのサービスを実行していることがわかりました。 –

関連する問題