Микросервис развернут в контейнере с 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);
});
});
});