Как отправить команды на указанный модуль c, развернутый в Kubernetes? - PullRequest
0 голосов
/ 17 апреля 2020

Микросервис развернут в контейнере с 2 репликами. Итак, у меня есть 2 капсулы. Этот микросервис получает команды от другой службы через служебную шину Azure. Моя проблема в том, что я хочу получить команды с одним из двух модулей. Я попытался включить сеансы и использовать SessionId, но я все еще получаю команды в неправильном модуле. Есть ли способ сделать это?

Здесь я оставляю, как настроить шину (используя библиотеку masstransit)

var bus = Bus.Factory.CreateUsingAzureServiceBus(sbc =>
        {
            var host = sbc.Host(_configuration["myConnectionString"], h => { });
            sbc.ConfigureSend(x => x.UseExecute(context =>
            {
                var sessionId = EnvConstants.SessionId;
                context.SetSessionId(sessionId);
            }));
            sbc.ReceiveEndpoint(host, _configuration["myQueueName"], e =>
            {
                e.RequiresSession = true;
                e.Instance(consumer);
                e.UseContextFilter(c =>
        {
               //I tryed this filter but sends my command to the skipped queue. 
            var sameSessionId = c.SessionId() == EnvConstants.SessionId;
            return Task.FromResult(sameSessionId);
        });
            });
        });

1 Ответ

1 голос
/ 27 апреля 2020

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

Для таких сценариев ios, как ваш, вы должны выбрать Stateful Sets , который предоставляет порядковый идентификатор для модулей, которые вы можете использовать, чтобы отличать их (и гарантировать это). И, в зависимости от идентификатора, вы можете иметь специальные очереди (или подписки на одну топи c) для адресации c pod.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...