我有一个docker compose文件,里面有几个容器,其中两个应该通过Redis DB通信。两个容器都有到里德的连接,我可以从这两个容器读/写。不过,我希望每次从另一个容器添加内容时都触发一个容器。我想我可以通过Redis Sub/Pub来实现这一点,但是当我运行代码时,它不会触发任何东西,即使我可以看到我已经向Redis队列添加了新项。
我有两个问题:
一。我想做的是可能的吗?我可以在两个独立的docker容器中发布/订阅并期望它按上述方式工作吗?
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容器2只是运行然后关闭。
谢谢!