Мы оцениваем nservicebus в моей компании за переработку нашего процесса продаж. мы будем использовать саги и веб-api. мы столкнулись с ответами на обработку блоков на стороне клиента. мы используем Handling Responses on the Client Side для руководства.Почему я не вижу свои данные ответа в своем обратном вызове?
от нашего контроллера клиента мы имеем следующий код:
[Route("CreateProduct")]
public ActionResult CreateProduct()
{
ProductCreatedResponse message = null;
var product = new TestProduct { Id = ObjectId.GenerateNewId().ToString() };
var command = new StartProductCommand { ProductId = product.Id, ProductName = "Product1" };
var sync = ServiceBus.Bus.Send("Io.Server." + command.ProductName, command)
.Register(ar =>
{
var localResult = (CompletionResult)ar.AsyncState;
message = (ProductCreatedResponse)localResult.Messages[0];
ViewBag.ResponseText = message.Status;
}, null);
sync.AsyncWaitHandle.WaitOne();
return View("Index");
}
из обработчика нашей саги мы имеем следующий код:
public void Handle(StartProductCommand message)
{
Data.ProductId = message.ProductId;
Data.Status = "Product Created";
var productCreatedResponse = new ProductCreatedResponse { Status = Data.Status };
_bus.Reply(productCreatedResponse);
}
localResult.Messages равна нулю. Что я делаю не так?
Я считаю, что вам нужно использовать метод Return (...), а не Reply (...), чтобы это работало. –
абсолютно, правильный. Благодарю. –