ServiceStack: как использовать распределенные RedisEvents?

Существует очень мало документации (которую я нашел) о том, как распределенные RedisEvents работают в ServiceStack.

В документации сказано:

Одно ограничение, которое имеет реализация по умолчанию MemoryServerEvents, ограничено для использования в пределах одного Сервера приложений, где поддерживаются все клиентские соединения. Это больше не является ограничением для новой серверной части Redis ServerEvents, которая использует распределенную серверную часть Redis-сервера, чтобы обеспечить возможность горизонтального масштабирования, способную обслуживать серверы приложений с разветвленной / распределенной нагрузкой. Если вы знакомы с SignalR, это похоже на масштабирование SignalR с Redis back-end.

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

Я что-то упустил или документации по этому вопросу почти нет?

1 ответ

Решение

Документация для RedisServerEvents находится по адресу: http://docs.servicestack.net/redis-server-events

В API нет разницы между использованием серверной части событий In Memory или Redis Server, которая прозрачно работает за IServerEvents API. Разница только в регистрации, где нужно зарегистрироваться RedisServerEvents с вашим настроенным IRedisClientsManager:

var redisHost = AppSettings.GetString("RedisHost");
if (redisHost != null)
{
    container.Register<IRedisClientsManager>(
        new RedisManagerPool(redisHost));

    container.Register<IServerEvents>(c => 
        new RedisServerEvents(c.Resolve<IRedisClientsManager>()));

    container.Resolve<IServerEvents>().Start();
}

Это заменяет память по умолчанию IServerEvents с RedisServerEvents реализация, которая отправляет вызовы API через Redis Pub/Sub для уведомления всех серверов приложений, настроенных с RedisServerEvents Конфигурация, которая будет отправлять событие сервера подключенным клиентам на их локальном /event-stream,

Другие вопросы по тегам