在我们的软件中,我们将Rebus服务总线与Microsoft消息队列结合使用,以执行各种操作。由于某些时候有多种情况会将消息发送到队列,但不知何故消息不被处理程序拾取并且消息从队列中删除(或者它从未到达)。我们无法在错误队列或死信队列中找到该消息。它在某个地方丢失了,我们不知道发生了什么。
我们在队列中启用了Journal,对于失败的消息,我们看到当前中止计数设置为3,其中成功处理的消息的当前中止计数为1.这对应于我们的rebus配置(见下文),但是我们不知道为什么它们会被中止或为什么有些消息会失败。事件日志中也找不到任何内容。
这是我们目前的rebus配置:
Configure.With(_adapter).Transport(t => t.UseMsmq(_rpAppBusAddress))
.Options(o =>
{
o.EnableEncryption(_rebusEncryptionKey);
o.SimpleRetryStrategy(maxDeliveryAttempts:3);
o.EnableDataBus().StoreInSqlServer(rebusConnectionString, attachmentDbTableName);
}).Routing(SetRouting())
.Start();
任何人都知道消息为什么消失了?任何帮助表示赞赏!
我们弄清楚消息为何消失了。应用程序没有权限将消息放在错误队列上(对我们感到羞耻)。