2016-10-31 3 views
0

Есть ли способ переопределить или установить значение null для сборки 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. –

Смежные вопросы