Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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# 处理Rebus MSMQ队列删除_C#_Msmq_Rebus - Fatal编程技术网

C# 处理Rebus MSMQ队列删除

C# 处理Rebus MSMQ队列删除,c#,msmq,rebus,C#,Msmq,Rebus,我在我们的REBS实现中使用MSMQ传输。以下是启动REBS服务的代码: BuiltinHandlerActivator handlerActivator; this.handlerActivator.Handle<TransportMessage> (this.HandleTransportMessageAsync); var bus = Configure.With(this.handlerActivator) .Transport(t =>

我在我们的REBS实现中使用MSMQ传输。以下是启动REBS服务的代码:

BuiltinHandlerActivator handlerActivator;
this.handlerActivator.Handle<TransportMessage>    
(this.HandleTransportMessageAsync);

 var bus = Configure.With(this.handlerActivator)
           .Transport(t => t.UseMsmq(this.SenderName))
           .Routing(r => r.TypeBased().AddEndpointMappingsFromAppConfig())
           .Start();  
内置式手控激活器手控激活器;
这是一个.handleActivator.Handle
(这是HandleTransportMessageAsync);
var bus=Configure.With(此.handlerActivator)
.Transport(t=>t.usemmq(this.SenderName))
.Routing(r=>r.TypeBased().AddEndpointMappingsFromAppConfig())
.Start();
我想处理异常/错误,以防有人使用snoop/compmgmt.msc意外删除消息队列

当我在消息队列中手动删除MSMQ消息队列时,我们收到一个文本错误

rebus工作队列已删除-将不再接收任何消息

那么,想知道在Rebus中是否有可能处理此异常并提供回调或任何其他方式


我注意到Rebus.MSMQ名称空间中有一个名为MsmqTransport的类,它公开了方法AddQueueCallback,以提供类似的回调。因为我是REBS/MSMQ的新手,所以我不知道如何使用它。任何支持都会有帮助

如果在运行时删除REBS端点的输入队列或错误队列,则无法帮助恢复它们

Rebus当然可以处理这种情况(在其传输实现中,以及在您的情况下,正如您正确理解的那样,在
MsmqTransport
类中),但我(以及其他传输的贡献者)一定在某个时候认为没有必要这样做,可能是因为队列在运行时突然消失是一种非常罕见的情况

在某种程度上,如果输入队列被意外删除,我不希望我的端点继续工作——我想我更希望日志中出现错误,红灯闪烁,因为这种情况将是生产中的一场相当大的灾难

我建议您不要在系统运行时删除队列。如果在您的计算机上乱搞Rebus Snoop时意外删除了队列,您可以重新启动端点,然后一切都将恢复正常



顺便说一句,添加了
AddQueueCallback
方法,这样就可以自定义自动创建队列的用户权限。。。我想对于特定的错误也可以做类似的操作,例如“哇,没有队列!!1”场景。如果您觉得这是缺少的内容,您应该通过创建问题来提出建议

谢谢您的及时回复。只是想再次确认无法处理此异常(显示编辑中提到的简单消息)?还有一件事我可以在后台计时器工作程序中使用MsmqUtil.QueueExists来验证队列是否存在,如果没有显示用户友好的消息…(必须在那里添加许多笑脸才能达到StackOverflow的15个字符的分钟限制…)