在 Azure 服务总线上使用 Rebus 2 进行审计

Auditing using Rebus 2 on Azure Service Bus

我的代码中有这样的东西

bus =  Configure.With(activator)
                .Options(o => o.SimpleRetryStrategy(errorQueueAddress: configuration.GetStringSettings("ErrorQueue")))
                .Routing(r => r.TypeBased().Map<MyMessage>("endpointQueueName"))
                .Transport(a => a.UseAzureServiceBus(configuration.GetStringSettings("AzureConnectionString"), configuration.GetStringSettings("InputQueueAddress"), Rebus.AzureServiceBus.Config.AzureServiceBusMode.Standard))
                .Options(o => o.EnableMessageAuditing("auditQueueName"))
                .Start();
...

bus.Send(message);

假设 "endpointQueueName" 和 "auditQueueName" 存在于我的 azure 服务总线命名空间中。当我发送 MyMessage 类型的消息时,我希望在 "endpointQueueName" 队列和 "auditQueueName" 队列中找到它,但这并没有发生。我只在 "endpointQueueName" 队列中找到它。

为什么?

我在配置上做错了什么?

您正在观察正确的行为:)

the Message Auditing documentation 所述,在消息消失 之前,消息被复制到审计 queue ,即

  • 处理消息时
  • 当 PUBLISHING 消息时(因为它可能被发布给 0 个订阅者 - Rebus 无法知道)

因此,如果您的处理程序(还必须配置消息审核)正确处理消息,您应该会在审核中看到一个副本(带有一些额外的 headers)queue。

我希望这能让它更清楚:)