我遇到了一个奇怪的情况:如果目标队列不存在,MSMQ会抛出邮件?
消息从ServerA发送到ServerB。它进入ServerA传出队列,然后发送到ServerB队列。
ServerB崩溃。我们必须重新格式化。当我们提起它时,我们忘了安装MSMQ服务。
消息在ServerA的传出队列中开始填充,直到发送消息的程序引发资源不足异常。
我们注意到错误并将MSMQ服务安装到ServerB上。 ServerA开始立即清空其传出队列。
当我们启动程序来处理ServerB上的消息时,它无法连接。我们了解到我们忘记了在ServerB上创建队列。然而,这时已经太晚了。所有位于ServerA队列中的900K消息都已发送到ServerB。据我所知,ServerB将它们丢弃,因为它没有配置目标队列。我已经知道正确的解决方案是在ServerA完全设置ServerB之前停止ServerA上的队列。
问题是:这真的是我们应该从MSMQ期望的真实行为吗?我会认为,更多的防御性设计方法会让ServerB拒绝这些消息,而不是将其丢弃。