C# 处理Rebus MSMQ队列删除
我在我们的REBS实现中使用MSMQ传输。以下是启动REBS服务的代码: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 =>
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个字符的分钟限制…)