关于Msmq的保存问题

xwyou 2003-10-17 04:31:17
OS:Windows Advanced Server,安装为一台域控制器,并安装了MSMQ,C#开发应用程序访问Msmq正常。
问题:为何服务器一重启后,所有在队列中的消息全部丢失?(我重新在另一台机器做测试,亦发现同样问题)
不知各位有何意见,按照文档我想应该是不会丢失的,是我的Msmq安装的配置有问题?还是别的原因?Windows Server不能指望它就不宕机,而其中的数据是不能丢失的,项目就快测试了,请给予帮助,谢谢!!

...全文
112 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
NoReady 2003-10-23
  • 打赏
  • 举报
回复
我知道了:message中有一个属性叫Recoverable,就是xwyou(水山)说的
haoliqi 2003-10-23
  • 打赏
  • 举报
回复
xuexi
xwyou 2003-10-23
  • 打赏
  • 举报
回复
消息传递
支持两种消息传递方法:快递以及可恢复传递。选择这两种方法的基本原则是:如果想得到更好的性能同时使用最少的资源,则使用快递方式;如果想获得可靠的传递而且在失败之后可以恢复,请选择可恢复传递。消息传递方法由发送应用程序通过编程指定。

可恢复消息传递还可以进一步区分成事务处理消息传递和非事务处理消息传递。

1.快递消息传递
使用快递消息传递意味着在路由和传递期间消息存储在内存中,这可以提供非常迅速的传递性能,但是如果消息经过的任意计算机出现问题,则快递消息不能恢复。值得注意的是,只要消息队列服务停止,快递消息就会丢失。

内存中聚积太多的快递消息会使存储页面导出到磁盘,导致性能降低。因此,建议不要存储超过物理内存容纳能力的快递消息。

但是快递消息也可能从网络故障中幸免。例如,如果消息队列应用程序通过消息队列服务器发送快递消息,而且消息队列服务器和目标计算机之间的网络链接失败,则消息队列服务器继续将消息存储在内存中。如果在还原网络链接之前消息队列服务器出现故障,则快递消息丢失。

2.可恢复消息传递
使用可恢复消息传递意味着在路由和传递期间将消息写到磁盘上,这种传递方式比快递略慢,但是在没有容错能力或在消息仍在队列中时关机(如使用便携机的移动式客户)的情况下,使用这种方式更好。如果发送消息时计算机故障或关闭,则该消息存储在磁盘上。重新启动计算机以及重新启动消息队列服务时,发送过程将自动继续。

所有的可恢复消息都根据内存映射文件结构保存到磁盘上。使用几个物理磁盘存储可恢复消息时可提高性能。详细信息,请参阅磁盘考虑。

----------------------
以上是在Windows MMC文档中查到,我不明白的是:上文说到这是在应用程序中指定消息方法,可是我没看到在.net中如何指定?如果指定了是可靠消息传送,是否在MSMQ服务器上就可以保存消息了呢(在磁盘上而非内存,也就是说服务器可以重启而不丢失)
xwyou 2003-10-23
  • 打赏
  • 举报
回复
有没有人装的Msmq在机器重启后消息没有丢失的呢?
如果是肯定要丢失的话,我想这个msmq也......
NoReady 2003-10-22
  • 打赏
  • 举报
回复
机子重启,消息是肯定会丢失的,我也碰到这事了,只能像redbb(Dotneter) 说的样,保存起来。
rgbcn 2003-10-18
  • 打赏
  • 举报
回复
up
elite2018 2003-10-18
  • 打赏
  • 举报
回复
show more your codes or msmq 's setup course
elite2018 2003-10-18
  • 打赏
  • 举报
回复
you can store your info to DB , it will maintain for ever :)
wkyjob 2003-10-18
  • 打赏
  • 举报
回复
只能帮你UP了

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧