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