我试图将ASB主题上的RequiresDuplicateDetection属性配置为true,但似乎不尊重主IServiceBusFactoryConfigurator上的设置:
var busControl = Bus.Factory.CreateUsingAzureServiceBus(cfg =>
{
cfg.Host("ASB_ConnectionString");
cfg.SubscriptionEndpoint<ExtractionRequest>("Test", e =>
{
e.LockDuration = TimeSpan.FromMinutes(1);
e.MaxAutoRenewDuration = TimeSpan.FromMinutes(5);
e.AutoDeleteOnIdle = TimeSpan.FromHours(1);
});
cfg.RequiresDuplicateDetection = true;
});在ASB上为此订阅创建的任何主题似乎都不尊重该设置。我找到了一种(可能是hacky)的方法,通过连接到我的消息类型的TopicDescription上的PublishTopology对象来进行实际工作。
var smth = busControl.Topology.Publish<ExtractionRequest>() as ServiceBusMessagePublishTopology<ExtractionRequest>;
smth.TopicDescription.RequiresDuplicateDetection = true;在此解决方案之后正确创建的主题。如果有人能对此有所了解,那就太好了。
发布于 2020-08-26 14:30:32
您可以在总线配置器中为主题配置发布拓扑:
cfg.Publish<ExtractionRequest>(x => x.RequiresDuplicateDetection = true);您应该在配置订阅端点之前配置拓扑,在本例中订单问题尤其重要。
在您的示例中,指定cfg.RequiresDuplicateDetection = true;只配置总线接收端点,而不配置订阅端点或任何其他配置的接收端点。
https://stackoverflow.com/questions/63599575
复制相似问题