У меня есть файл docker-compose с несколькими контейнерами, два из которых должны обмениваться данными через Redis DB. Оба контейнера имеют связи с Рейдами, и я могу читать / писать из обоих. Однако я бы хотел, чтобы контейнер запускался каждый раз, когда что-то добавлялось из другого контейнера. Я думал, что смогу сделать это через Redis Sub / Pub, но когда я запускаю код, он никогда ничего не вызывает, даже когда я вижу, что добавил новые элементы в очередь Redis.
Отсюда у меня два вопроса:
1. Возможно ли то, что я хочу сделать? Могу ли я сделать публикацию / подписку в двух отдельных контейнерах док-станции и ожидать, что она будет работать, как описано выше?
2. Если это возможно, кто-нибудь может указать мне, где я ошибаюсь с этими инструментами?
Это моя функция: я добавляю новые данные в очередь Redis, а затем публикую их в Docker-контейнере 1.
func redisShare(key string, value string) {
jobsQueue.Set(key, value, 0) //setting in the queue
jobsQueue.Publish(key, value) //publishing for the other docker container to notice
fmt.Println("added ", key, "with a value of ", value, "to the redis queue")
}
Я использую эту строку в моем другом контейнере Docker, чтобы подписаться на очередь Redis и прослушать изменения:
redisdb.Subscribe()
Я ожидаю, что если что-то будет добавлено в очередь redis, то оно поделится данными с другим контейнером, и я увижу полученное сообщение, но сейчас Docker Container 2 просто запускается, а затем закрывается.
Спасибо!