Nservicebus синхронный вызов
Я использую модель ответа на запрос NServiceBU для одного из моих проектов. Существует служебная служебная шина, которая прослушивает сообщение запроса и отвечает обратно сообщением запроса. Так в коде сообщения WCF я закодировал как
// sent the message to bus.
var synchronousMessageSent =
this._bus.Send(destinationQueueName, requestMessage)
.Register(
(AsyncCallback)delegate(IAsyncResult ar)
{
// process the response from the message.
NServiceBus.CompletionResult completionResult = ar.AsyncState as NServiceBus.CompletionResult;
if (completionResult != null)
{
// set the response messages.
response = completionResult.Messages;
}
},
null);
// block the current thread.
synchronousMessageSent.AsyncWaitHandle.WaitOne(1000);
return response;
Que Destinaton отправит ответ. Я получаю повторение один или два раза после того, как ответ не приходит к клиенту. Я делаю что-то не так
1 ответ
Почему вы пытаетесь превратить асинхронный фреймворк в синхронный? Существует фундаментальный недостаток в том, что вы пытаетесь сделать.
Вы должны внимательно посмотреть на свой дизайн и оценить преимущества асинхронных вызовов. Тот факт, что вы делаете
// block the current thread.
synchronousMessageSent.AsyncWaitHandle.WaitOne(1000);
Это очень важно. Чего вы пытаетесь достичь с этим? Создайте свою систему на основе синхронного обмена сообщениями, и вы получите НАМНОГО лучшую систему. В противном случае вы можете просто использовать блокирующие сокеты tcp/ip.