MSMQ接收服务异常跟踪

异常描述:

自己写的一个处理消息队列的Windows服务,异步读取消息队列里面的消息,并进行相关的业务处理,间隔1-2个月的时间报System.Messaging.MessageQueueException: 消息队列服务不可用的异常,重启这个Windows服务就正常了,怀疑是线程死掉了。异常捕捉信息: System.Messaging.MessageQueueException: 消息队列服务不可用。在 System.Messaging.MessageQueue.ResolveFormatNameFromQueuePath(String queuePath, Boolean throwException) 在 System.Messaging.MessageQueue.get_FormatName() 在 System.Messaging.MessageQueue.add_ReceiveCompleted(ReceiveCompletedEventHandler value) 在 WSMsmqReceiveAuto.Service1.OnStart(String[] args) 准确的说是在服务器重新启动的时候会出现上述异常。

问题原因:是由于windows重启时MsMq晚于异步消息处理服务启动所导致的。仔细看下事件查看器不难看出,自己写的这个winservices启动早于MSMQ服务。所以会出现系统重启的时候报了上面的错误。解决办法:修改服务依赖,设置异步消息处理服务依赖于Msmq。

最了个bat文件

@echo======================开始安装服务===========================

C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/InstallUtil.exe WSReceiveKeyWordMessage.exe @echo======================安装服务结束===========================

@echo======================开始更改服务依赖=======================

REG ADD HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/WSReceiveKeyWordMessage /v DependOnService /t REG_MULTI_SZ /d MSMQ

@echo======================更改服务依赖结束=======================

 @echo======================开始启动服务===========================

net start WSReceiveKeyWordMessage

 @echo======================启动服务结束===========================

@pause

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值