2017-09-08 4 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); 
    } 

type de message StartAndNextCommand peut consommer, mais le type de liste ne parviennent pas à consommer, pourquoi?rabbitmq Les consommateurs ne consomment pas

+0

mais le type de Liste ne peut pas consommer – Andy

Répondre

1

Ceci est voulu. Nous ne pouvons consommer qu'un seul message. Vous pouvez avoir un nouveau contrat, comme:

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

et un consommateur pour ce type de message

public async Task Consume(ConsumeContext<StartAndNextBatch> context) 

mais vous devez également publier ce type de message

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

C'est Ok, merci beaucoup! – Andy