MassTransit.AmazonSQS: Можно ли подписать уже существующую очередь SQS в конечной точке приема на SNS Topi c после запуска шины? - PullRequest
0 голосов
/ 28 мая 2020

Я использую конфигурацию MassTransit с AmazonSQS. В своей программе я начинаю с создания точки приема с очередью «input-queue1», подписываю эту очередь SQS на SNS topi c с именем «topic1» и связываю потребителя с этой конечной точкой приема, которая выполняет стандартную печать сообщений, которые она получает. После запуска автобуса я хочу подписать уже созданную очередь «input-queue1» на другой SNS topi c с именем «topic2», но я не смог найти способ сделать это после запуска автобуса (это важно для меня что я могу сделать это после запуска автобуса). Есть ли способ сделать это, и я просто что-то упускаю, или это вообще невозможно? (Я пробовал использовать закомментированную часть кода, но это не сработало)

class Program
    {
        static async Task Main(string[] args)
        {
            var bus = Bus.Factory.CreateUsingAmazonSqs(x =>
            {
                x.Host(Constants.Region, h =>
                {
                    h.AccessKey(Constants.AccesskeyId);
                    h.SecretKey(Constants.SecretAccessKey);
                });

                x.ReceiveEndpoint("input-queue1", e =>
                {
                    e.Subscribe("topic1", callback => { });

                    e.Consumer(() => new Handler());
                });

            });

            bus.StartAsync().Wait();

            /*var handle = bus.ConnectReceiveEndpoint("input-queue1", e => {
                e.Subscribe("topic2", callback => { });
            });
            var ready = await handle.Ready;*/

            Console.WriteLine("Listening to messages...");
            Console.WriteLine("Press enter to quit");
            Console.ReadLine();
        }
    }

1 Ответ

0 голосов
/ 28 мая 2020

Вы не можете изменить топологию конечной точки приема после ее создания. Это означает, что новые подписки topi c не могут быть созданы, а существующие подписки не могут быть удалены.

Если вам нужно изменить конфигурацию конечной точки приема, вам нужно будет сделать это самостоятельно, используя SNS API для самостоятельного добавления подписки. Я бы спросил , почему вы хотите это сделать. Если потребитель не может использовать сообщение, перенаправленное в очередь, оно будет перемещено в пропущенную очередь.

...