2016-10-31 6 views
0

メッセージの公開中にフィールドでのMassTransitのビルドを無効にするか、設定する方法はありますか? 私の特別なケースでは、私の統合テストのメッセージ公開中にConversationIdをnullに設定する必要があります。私は公開中のMassTransit override ConversationId

await Bus.Publish<ITestContractMessage>(new {TestName = "Hello World"}); 

を使用していたメッセージを公開するには、私はConfigurePublishメソッドを使用してバスを設定しようとしたが、それは助けにはなりませんでした。

cfg.ConfigurePublish(x => x.UseSendExecute(ctx => ctx.ConversationId = null)); 

私はそれを痛めることができますか?

答えて

1

あなたはそれを設定するか、ヘッダのいずれか、使用することができます

await Bus.Publish<ITestContractMessage>(new { 
    TestName = "Hello World!" 
}, context => context.ConversationId = null); 

をあなたは同様に他のヘッダーのいずれかを設定することができます。

代理人が呼び出される前にConversationIdが指定されているので、それをクリアできるはずです。少なくとも、それはデザインだった、私はあなたが正しいかどうかを知るだろうと思う!

+0

ありがとうございました!しかし、このアプローチはConversationIdではうまくいきません。その理由は、デリゲートの呼び出しの後に値が設定されるからです。 残りのヘッダーの一部、たとえばSourceAddressがこのように変更される可能性があります。 – Paulik

+0

フィルターの順序を確認し、壊れたものを修正します。開発者がアクセスする前に設定して、オーバーライドできるようにする必要があります。 –

+0

ええ、 'ConversationId'が存在しない場合はそれを強制しますので、nullで送る方法はありません。ただし、nullに設定すると新しいものが生成されます。 –

関連する問題