2016-10-05 2 views
0

メッセージがキューに配信されない場合は、MassTransitを使用してRabbitMQ交換に送信する際に例外を取得したいと考えています。このようなものにはRabbitMQ必須フラグが使用できるようですが、MassTransitを使用してこれを設定する方法はありませんでした。これはサポートされていますか?MassTransitにRabbitMQ必須フラグがサポートされています

マイコード:

var personSendEndpoint = busControl.GetSendEndpoint(new Uri($"rabbitmq://localhost/{personQueueName}")).Result; 

// An exception should occur on the following call if the message is not delivered to any queue 
personSendEndpoint.Send(new PersonUpdated() { Name = "Dorian Gray", Key = Guid.NewGuid() }); 

答えて

0

あなたはMandatoryフラグを設定することができますが、あなたのためにそれを行うにはキュートな拡張メソッドがありません。

await endpoint.Send(new PersonUpdate(...), context => 
{ 
    (context as RabbitMqSendContext).Mandatory = true; 
}); 

そして、それは交換のためのバインディングが存在しない場合に例外をスローするのRabbitMQを伝えるフラグを設定します。以下に示すように基本的に、あなたが行います。

+0

クリスさん、義務的なフラグを設定していますが、送信コールから.Net例外を受け取ることはできません(私は、バインディングのないポストしている交換をチェックしました)。 RabbitMQの例外はMassTransitによって圧倒されていますか?送信が成功したかどうかテストする方法はありますか?または私は何かを逃していますか? – MarkHasper

+0

あなたはSend()を呼び出すのを待っていますか?MassTransitのすべてのメソッドは非同期ですので、例外を見たい場合はメソッドの戻りを待つ必要があります。 –

+0

はい、私は送信を待っています。それはそうではないようです。 – MarkHasper

関連する問題