NServiceBus命令处理程序一次又一次地被激发

NServiceBus命令处理程序一次又一次地被激发,nservicebus,Nservicebus,我有一个NserviceBus命令的处理程序,在它的处理程序中,我们有一个读取xml的进程,但这需要时间。现在发生的是,当读取xml时,命令处理程序再次启动,并启动我配置为最大重试次数的次数,在本例中为5次 这是一些代码:- class SendHandler : IHandleMessages<SendCommand> { public SendHandler() { ------some code } public void

我有一个NserviceBus命令的处理程序,在它的处理程序中,我们有一个读取xml的进程,但这需要时间。现在发生的是,当读取xml时,命令处理程序再次启动,并启动我配置为最大重试次数的次数,在本例中为5次

这是一些代码:-

class SendHandler :
    IHandleMessages<SendCommand>
{ 
public SendHandler()
    {
        ------some code
    }


    public void Handle(SendCommand message)
    {   *1   
          -----there is some code which is taking time
          -----the line number (*1) is fired again and again by the time processing takes place
}
类SendHandler:
IHandleMessages
{ 
公共SendHandler()
{
------一些代码
}
公共无效句柄(SendCommand消息)
{   *1   
-----有些代码需要时间
-----在进行处理时,行号(*1)会一次又一次地触发
}

请提供帮助。

检查您的第一级和第二级重试设置( 按照注释中的建议,尝试队列中的单个命令消息。
如果处理程序未完成XML处理,请检查它是否超过默认值。如果超过默认值,请检查处理程序所采用的方法,因为您可能需要较长的时间(er)正在运行进程。

据我所知,您不能在消息级别指定FLR/SLR设置。它们只能在端点级别指定。如果一个端点正在处理不同的消息,最好根据消息SLA对它们进行分组。因此,请将具有不同SLA的消息类型分离到不同的端点。请发布您需要的内容r用例在这里的Google群组中:我们可以插话吗?谢谢。

你确定没有发送和处理另一条消息吗?处理消息需要多长时间,你使用的是什么传输方式?@phil这个处理程序发送了另一条消息,这条消息正在其他地方处理。@chad大约需要20-30分钟秒。我正在使用msmqOr,是否有任何方法可以更改特定命令的总线配置。就像app.config中的配置设置为“”…我只想通过代码覆盖特定情况下的app.config。任何帮助…!!如果他正在使用azure传输,他可能也会遇到peeklock超时,默认为某时大概30秒。特别是在如何处理无法在事务超时时间内处理的长时间运行的流程方面,最好提供一些指导。除非文档已经更新,否则我知道这将有助于我们开始。@Chadrupper的观点很好。锁定持续时间可以延长到5分钟。除此之外,应该有人真的知道请仔细研究更改代码的方法。如果它是一个长时间运行的进程,则可以使用Sagas。如果它不是一个长时间运行的进程,但确实需要较长的处理时间,则使用单独的线程。或者,是否有任何方法更改特定命令的总线配置。如app.config中的配置集为“”。我想覆盖此app.confi如果您的命令类型需要不同的FLR/SLR配置,我建议您考虑将该命令拆分为一个单独的端点来处理,在该端点上应用这些设置。是否有任何方法可以在消息级别配置nservicebus,我的意思是使用Cus特定消息的tomConfigurationSource将具有otehr消息的某些值和app.config值。