我们在使用 NServiceBus 的负载平衡、高容量环境中遇到 MSMQ 问题。
我们的环境如下所示: 1 F5 通过循环将 Web 流量分发到 6 个应用程序服务器。这 6 台服务器中的每台都使用位于集群上的远程计算机上的 Bus.Send to 1 队列。
正常使用期间的事件吞吐量约为每台服务器每秒 5-10 个。所以整个环境中每秒有 30-60 个事件,具体取决于负载。
我们看到的问题是 1 个应用程序框能够将消息发送到集群队列,但其他 5 个不能。查看遇到故障的 5 个盒子,集群的传出队列处于非活动状态。
事务死信队列中也有大量事件。当我们清除该队列时,传出队列连接到集群,但是,消息在传出队列中增长为未确认。这会继续增长,直到它们再次进入事务死信队列,并且传出队列将状态更改为非活动状态。
有趣的是,当我们执行此清除操作时,另一个盒子将成为“好盒子”。所以我们很确定问题不是一个坏盒子,而是一次只有一个盒子可以可靠地保持与集群队列的连接。
有没有人遇到过这个?