2016-10-31 6 views
0

메시지 게시 중 필드에서 MassTransit의 빌드를 무시하거나 null로 설정할 수있는 방법이 있습니까? 필자의 경우, 통합 테스트에서 메시지를 게시하는 동안 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는 위임 호출 후에 채워지므로이 방법은 ConversationId에서 작동하지 않습니다. 나머지 헤더 중 일부 (예 : SourceAddress)가 이러한 방식으로 변경 될 수 있습니다. – Paulik

+0

필터 순서를 확인하고 내가 찾은 것을 수정합니다. 개발자가 액세스하기 전에 설정해야하므로 재정의 할 수 있습니다. –

+0

예, 존재하지 않으면'ConversationId'를 강제합니다. 따라서 null로 전송할 방법이 없습니다. 그러나 null로 설정하면 새로운 것을 생성합니다. –