मैं अपनी मौजूदा उपभोक्ता SQS कतारों को नई सेटिंग्स के साथ अद्यतन करने का प्रयास कर रहा हूँ। इस मामले में हमें सभी कतार टीटीएल को अधिकतम 14 दिनों (सामान्य कतारों, त्रुटि और डीएलक्यू कतारों दोनों के लिए) में बदलने की जरूरत है।

चारों ओर बहुत खोज करने के बाद मुझे एक कोड मिला जो ऐसा लगता है कि वह ऐसा कर सकता है:

cfg.QueueAttributes.Add(QueueAttributeName.MessageRetentionPeriod, 1209600);
cfg.SendTopology.ConfigureErrorSettings = settings => settings.QueueAttributes.Add(QueueAttributeName.MessageRetentionPeriod, 1209600);
cfg.SendTopology.ConfigureDeadLetterSettings = settings => settings.QueueAttributes.Add(QueueAttributeName.MessageRetentionPeriod, 1209600);

हालांकि मौजूदा कतारों के खिलाफ निर्माण करते समय यह सेटिंग्स को अपडेट नहीं कर रहा है।

यहाँ मेरा पूरा मासट्रांसिट सेटअप है:

services.AddMassTransit(x =>
{
    x.AddAmazonSqsMessageScheduler();
    x.AddConsumers(assembliesWithConsumers.ToArray());
    x.UsingAmazonSqs((context, cfg) =>
    {
        cfg.UseAmazonSqsMessageScheduler();

        cfg.Host("aws", h =>
        {
            if (!String.IsNullOrWhiteSpace(mtSettings.AccessKey))
            {
                h.AccessKey(mtSettings.AccessKey);
            }

            if (!String.IsNullOrWhiteSpace(mtSettings.SecretKey))
            {
                h.SecretKey(mtSettings.SecretKey);
            }

            h.Scope($"{mtSettings.Prefix}-{mtSettings.Environment}", true);
            var sqsConfig = !String.IsNullOrWhiteSpace(mtSettings.SqsServiceUrl)
                ? new AmazonSQSConfig() { ServiceURL = mtSettings.SqsServiceUrl }
                : new AmazonSQSConfig()
                    { RegionEndpoint = RegionEndpoint.GetBySystemName(mtSettings.Region) };

            h.Config(sqsConfig);

            var snsConfig = !String.IsNullOrWhiteSpace(mtSettings.SnsServiceUrl)
                ? new AmazonSimpleNotificationServiceConfig()
                    { ServiceURL = mtSettings.SnsServiceUrl }
                : new AmazonSimpleNotificationServiceConfig()
                    { RegionEndpoint = RegionEndpoint.GetBySystemName(mtSettings.Region) };

            h.Config(snsConfig);
        });

        cfg.QueueAttributes.Add(QueueAttributeName.MessageRetentionPeriod, 1209600);
        cfg.SendTopology.ConfigureErrorSettings = settings => settings.QueueAttributes.Add(QueueAttributeName.MessageRetentionPeriod, 1209600);
        cfg.SendTopology.ConfigureDeadLetterSettings = settings => settings.QueueAttributes.Add(QueueAttributeName.MessageRetentionPeriod, 1209600);

        cfg.ConfigureEndpoints(context, new BusEnvironmentNameFormatter(mtSettings.Environment));
    });
});

क्या किसी को पता है कि मासट्रांसिट के साथ एसक्यूएस कतार सेटिंग्स अपडेट को कैसे मजबूर किया जाए?

0
Tanuki 5 अक्टूबर 2021, 20:11

1 उत्तर

सबसे बढ़िया उत्तर

MassTransit मौजूदा कतारों या विषयों पर सेटिंग अपडेट नहीं करेगा। सेटिंग्स को लागू करने का एकमात्र तरीका कतार या विषय को हटाना है, जिसके बाद मासट्रांसिट इसे कॉन्फ़िगर की गई सेटिंग्स के साथ फिर से बनाएगा।

1
Chris Patterson 5 अक्टूबर 2021, 23:29