在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
。
那么我该如何处理消费者的请求/回复?