У меня много приложений: my.com
, a.my.com
, b.my.com
, ..
Все они используют один сервер Redis с разными базами данных url: redis://localhost:6379/1
, url: redis://localhost:6379/2
, ..
Но широковещательные сообщения поступают в каждое приложение. Это из-за https://redis.io/topics/pubsub:
Pub / Sub не имеет отношения к ключевому пространству. Это сделано, чтобы не мешать ему ни на каком уровне, включая номера баз данных. Публикация на db 10 будет услышана подписчиком на db 1. Если вам нужна какая-то область видимости, добавьте к каналам префикс с именем среды.
Та же проблема была в репозитории Rails https://github.com/rails/rails/issues/27224.
Я вижу только несколько вариантов:
- Используйте отдельный сервер Redis для каждого приложения
- Как-то префикс
steam_from
в#subscribed
:stream_from("#{some_config.or_env.channel_prefix}_#{user.id}")
- Используйте другого провайдера (не Redis)
Я что-то упускаю? Есть ли лучшее и более простое решение?