Estoy tratando de configurar la propiedad RequiresDuplicateDetection en los temas de ASB en verdadero, pero no parece que se respete la configuración en el IServiceBusFactoryConfigurator principal:

        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;
        });

Los temas que se crean para esta suscripción en ASB no parecen respetar la configuración. Encontré una manera (tal vez hacky) de solucionarlo enganchándome al objeto TopicDescription en el PublishTopology de mi tipo de mensaje.

        var smth = busControl.Topology.Publish<ExtractionRequest>() as ServiceBusMessagePublishTopology<ExtractionRequest>;
        smth.TopicDescription.RequiresDuplicateDetection = true;

Los temas que se crean correctamente después de esta solución. Si alguien puede arrojar algo de luz sobre esto, sería genial.

1
Vidmantas Blazevicius 26 ago. 2020 a las 17:14

1 respuesta

La mejor respuesta

Puede configurar la topología de publicación para el tema dentro del configurador de bus:

cfg.Publish<ExtractionRequest>(x => x.RequiresDuplicateDetection = true);

Debe configurar la topología antes de configurar el punto final de su suscripción, el orden es especialmente importante en este caso.

En su ejemplo, especificar cfg.RequiresDuplicateDetection = true; configura solo el punto final de recepción del bus, no el punto final de la suscripción ni ningún otro punto final de recepción configurado.

2
Chris Patterson 26 ago. 2020 a las 14:34