Рельсы и ActionCable. Несколько сред с одним сервером Redis

У меня много приложений: 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.

Я вижу только несколько вариантов:

  1. Используйте отдельный сервер Redis для каждого приложения
  2. Как-то префикс steam_from в #subscribed: stream_from("#{some_config.or_env.channel_prefix}_#{user.id}")
  3. Используйте другого провайдера (не Redis)

Я что-то упускаю? Есть ли лучшее и более простое решение?


person Evmorov    schedule 28.09.2017    source источник


Ответы (1)