【问题标题】:NServicebus and ASP.NET Web API - MSMQ Transaction issues?NServicebus 和 ASP.NET Web API - MSMQ 事务问题?
【发布时间】:2012-11-05 11:56:27
【问题描述】:

我有一个 ASP.NET Web API,它接受 HTTP PUT 方法中的 DTO,执行一些验证,然后 Bus.Send()s 一个命令。

目前,所有消息都在配置的 MSMQ 错误队列中结束。

这里有一些伪代码作为我正在使用的模型的概述......

public HttpResponseMessage Put([FromBody]EntityModel entity)
    {
        if (ModelState.IsValid)
        {
           _bus.Send(new command());
           return Request.CreateResponse(HttpStatusCode.Accepted);
        }
        else
        {
            var msg = new HttpResponseMessage(HttpStatusCode.NotModified) { ReasonPhrase = "Error text here" };
            return msg;
        }
    }

经过调查,我在 Web API 操作方法的最后一个大括号/大括号上设置了一个断点,并查看了计算机管理中的 MSMQ,可以看到消息已进入正确的队列并且看起来格式正确。

当我越过最后一个括号时,消息立即移入错误队列。 断点后似乎没有其他代码在运行(自定义过滤器/属性等)

我推测这与队列事务有关,并且某些原因导致该事务中止,但我无法弄清楚它是什么......

任何帮助都会很棒,谢谢,

【问题讨论】:

  • 您是否无法访问对队列中的消息执行某些操作的 NServiceBus 服务/消息处理程序代码?

标签: asp.net-web-api msmq nservicebus3


【解决方案1】:

听起来消息处理程序代码中存在故障。如果消息处理失败,那么它将从输入队列中删除(您可以在其中看到它已传递)并移至错误队列。

你能确认没有处理失败吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-09
    • 2021-07-02
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    相关资源
    最近更新 更多