为了提高应用程序的响应能力,消息处理程序使用多个响应进行响应。但它观察到消息只有在消息处理完全完成后才会传递到目的地,即使事务被禁用如下 var busConfiguration = new BusConfiguration(); busConfiguration.Transactions().Disable();
我们的代码如下:使用MyMessages;使用 NServiceBus;使用系统;
public class RequestDataMessageHandler : IHandleMessages<RequestDataMessage>
{
public IBus Bus { get; set; }
public void Handle(RequestDataMessage message)
{
Console.WriteLine("Received request {0}.", message.DataId);
Console.WriteLine("String received: {0}.", message.String);
var response1 = new DataResponseMessage
{
DataId = message.DataId,
String = "InProgress"
};
Bus.Reply(response1);
try
{
TimeConsumingActivity();
var response = new DataResponseMessage
{
DataId = message.DataId,
String = message.String
};
Bus.Reply(response);
}
catch
{
var response2 = new DataResponseMessage
{
DataId = message.DataId,
String = "Error in the process"
};
Bus.Reply(response2);
}
}
}
但是它的观察者只有在 TimeConsumingActivity 完成后才知道 response1 和 response 到达目的地(这不是订单的问题)