在 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。
我希望这能让它更清楚:)
我的代码中有这样的东西
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。
我希望这能让它更清楚:)