如何与消费者进行请求/响应

时间:2015-08-14 14:35:03

标签: c# masstransit

Request/Respond page in the documentation上显示了这样的回复

Bus.Initialize(sbc => { 
   sbc.UseMsmq(); 
   sbc.UseMulticastSubscriptionClient(); 
   sbc.ReceiveFrom("msmq://localhost/message_responder"); 
   sbc.Subscribe(subs=> { 
     subs.Handler<BasicRequest>( (cxt, msg )=> { 
       cxt.Respond(new BasicResponse{Text = "RESP"+msg.Text}); 
     }); 
   });
})

在我的应用程序中,我使用的是消费者而不是处理程序(因为我需要通过Autofac进行依赖注入)所以我的消费者看起来像这样

public class DoctorImporter : Consumes<ImportDoctorCommand>.For<Guid>
{
    public void Consume(ImportDoctorCommand cmd) {
        foo.DoStuff();
        var ev = new ImportDoctorCommand.Occurred() { CorrelationId = cmd.CorrelationId };
        bus.Publish(ev);
    }
    readonly IServiceBus bus;
    readonly Foo foo;
    public DoctorImporter(IServiceBus bus, Foo foo) {
        this.bus = bus;
        this.foo = foo;
    }
    public Guid CorrelationId { get; private set; }
}

但这不起作用,因为我似乎需要.Respond()而不是.Publish()而且.Respond()上没有IServiceBus

那么我该如何处理消费者的请求/回复?

0 个答案:

没有答案