Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# N服务总线不';t在启动时启动事件侦听器_C#_Msmq_Nservicebus - Fatal编程技术网

C# N服务总线不';t在启动时启动事件侦听器

C# N服务总线不';t在启动时启动事件侦听器,c#,msmq,nservicebus,C#,Msmq,Nservicebus,我通过关闭NServiceBus端点并将消息推送到MSMQ队列来玩弄系统的容错性 在端点(NServiceBus.Host.exe)启动时,我的消息被拾取(它们是“命令”)并进行处理。处理这些命令的处理程序也会发布事件。然而,这些事件并未得到处理。有人知道为什么会这样吗 如果在端点运行所有进程时,我发送一个新命令。当NServiceBus主机已经运行时,流程如下(正确): 这是消息位于队列上且尚未启动端点时的流: --Endpoint not running -- -> UI -

我通过关闭NServiceBus端点并将消息推送到MSMQ队列来玩弄系统的容错性

在端点(
NServiceBus.Host.exe
)启动时,我的消息被拾取(它们是“命令”)并进行处理。处理这些命令的处理程序也会发布事件。然而,这些事件并未得到处理。有人知道为什么会这样吗

如果在端点运行所有进程时,我发送一个新命令。当NServiceBus主机已经运行时,流程如下(正确):

这是消息位于队列上且尚未启动端点时的流:

--Endpoint not running -- -> 
    UI -> 
        Command -> 
            MSMQ -> 
                --Endpoint started-- -> 
                    CommandHandler -> 
                        Nothing.
事件处理程序与接收并处理命令的命令处理程序位于同一程序集中

在NService总线的启动过程中,似乎没有发布和/或处理这些事件。将拾取消息并处理命令。。但随后发布的任何事件都不会被其侦听器拾取,因此不会被处理


您应该知道,我已经为端点和客户端调用了
PurgeOnStartup(false)
。据我所知,这很好用。。因为队列上的命令实际上处理得很好。。他们只是不发布任何事件。

我猜,由于端点是自包含的,NSB不会隐式地发起对自身的订阅。您可以尝试显式设置订阅,它应该可以工作。这在某种程度上是一种非典型的情况,无法隐式工作。

我如何手动设置此订阅?我所读/看到的一切都没有提到手动订阅。这应该从UI还是从端点完成?在启动期间,您可以使用Bus.Subscribe()。我无法确认此行为。我们有你们称之为自包含的端点,里面有pub-sub,订阅工作非常好。我看到了同样的行为。我关闭了订阅服务器,用Bus.Send从我的客户端将一些消息放入队列。启动订阅服务器时,会处理命令,但不会处理订阅的事件。然后我可以发送另一条消息,我的事件处理程序就会启动。是因为我在使用InMemoryPersistence吗?你使用什么类型的持久性?
--Endpoint not running -- -> 
    UI -> 
        Command -> 
            MSMQ -> 
                --Endpoint started-- -> 
                    CommandHandler -> 
                        Nothing.