2017-09-08 27 views
1
public class RequestConsumer : 
    IConsumer<StartFlowCommand>, 
    IConsumer<List<StartAndNextCommand>> 
{ 
    readonly IWorkFlowHandler _flowHandler; 
    public RequestConsumer(IContainer container) 
    { 
     _flowHandler = container.Resolve<IWorkFlowHandler>(); 
    } 

    public async Task Consume(ConsumeContext<StartAndNextCommand> context) 
    { 
     var result =await _flowHandler.WorkFlowStartNext(context.Message); 
     await context.RespondAsync(result); 
    } 


    public async Task Consume(ConsumeContext<List<StartAndNextCommand>> context) 
    { 
     var result = await Task.Run(() => _flowHandler.WorkFlowStartNextBatch(context.Message)); 
     await context.RespondAsync(result); 
    } 

メッセージタイプは、消費することができますが、リストの種類は、消費することはできませんか?RabbitMQの消費者は消費しない理由は、StartAndNextCommandの

+0

が、タイプを公開する必要がありますList は消費できません – Andy

答えて

1

これは仕様です。私たちは1つのメッセージしか消費できません。あなたは次のように、新しい契約を持つことができます。

public interface StartAndNextBatch 
{ 
    IList<StartAndNextCommand> Commands { get; } 
} 

し、そのメッセージタイプ

public async Task Consume(ConsumeContext<StartAndNextBatch> context) 

のための消費者を持っていますが、のメッセージタイプ

await bus.Publish<StartAndNextBatch>(
    new { Commands = ... } 
); 
+0

これは大丈夫です、ありがとうございます! – Andy

関連する問題