如何解决如何为AzureServiceBus主题配置RequiresDuplicateDetection
我正在尝试将ASB主题上的$answers = AnswerVersion::query()->with('answer')
->whereHas('answer.project',function ($query) use ($project) {
$query->where('project_id',$project->id);
});
属性配置为true,但是似乎没有遵循主RequiresDuplicateDetection
上的设置:
IServiceBusFactoryConfigurator
在ASB上为此订阅创建的任何主题似乎都不符合该设置。我发现了一种(也许很怪异的)方法,可以通过钩住我消息类型的 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;
});
上的TopicDescription
对象来实现。
PublishTopology
此替代方法后正确创建的主题。如果任何人都可以对此有所了解,那就太好了。
解决方法
您可以在总线配置器中配置主题的发布拓扑:
cfg.Publish<ExtractionRequest>(x => x.RequiresDuplicateDetection = true);
您应该先配置拓扑,然后再配置订阅端点,在这种情况下,订购尤其重要。
在您的示例中,指定cfg.RequiresDuplicateDetection = true;
仅配置总线接收端点,而不配置订阅端点或任何其他已配置的接收端点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。