QA@IT
«回答へ戻る

edit

2024
 redisのインスタンス(=redisへの接続)は、複数のスレッドで共有しないものだと思います。たとえば、forkして親子プロセスで同じ接続が共有されているとInheritedErrorになります。
 
 メインスレッドと、Thread.newした側と、両方でRedis.newして、計2本の接続を持たせるのでどうですか?
+
+### 質問の意図を勘違いしてたので追記
+
+メインスレッド側からワーカー側のsubscriptionをコントロールしたいという話だったのですね。。。勘違いしてましたすみません。
+
+うーん、その場合には、subscriptionを追加させるためのトピック・メッセージを組み込む、つまり制御用のトピックに必ずsubscribeさせておくという感じですかね。ただ、pub/subの設計って、そもそも疎結合のための仕組みだと思うので、メインスレッド側からワーカーを直接コントロールしたいという要件自体が、あまりpub/sub向きではない(ほかの通信方法のほうが向いてる)という気がします。

redisのインスタンス(=redisへの接続)は、複数のスレッドで共有しないものだと思います。たとえば、forkして親子プロセスで同じ接続が共有されているとInheritedErrorになります。

メインスレッドと、Thread.newした側と、両方でRedis.newして、計2本の接続を持たせるのでどうですか?

質問の意図を勘違いしてたので追記

メインスレッド側からワーカー側のsubscriptionをコントロールしたいという話だったのですね。。。勘違いしてましたすみません。

うーん、その場合には、subscriptionを追加させるためのトピック・メッセージを組み込む、つまり制御用のトピックに必ずsubscribeさせておくという感じですかね。ただ、pub/subの設計って、そもそも疎結合のための仕組みだと思うので、メインスレッド側からワーカーを直接コントロールしたいという要件自体が、あまりpub/sub向きではない(ほかの通信方法のほうが向いてる)という気がします。

redisのインスタンス(=redisへの接続)は、複数のスレッドで共有しないものだと思います。たとえば、forkして親子プロセスで同じ接続が共有されているとInheritedErrorになります。

メインスレッドと、Thread.newした側と、両方でRedis.newして、計2本の接続を持たせるのでどうですか?

### 質問の意図を勘違いしてたので追記

メインスレッド側からワーカー側のsubscriptionをコントロールしたいという話だったのですね。。。勘違いしてましたすみません。

うーん、その場合には、subscriptionを追加させるためのトピック・メッセージを組み込む、つまり制御用のトピックに必ずsubscribeさせておくという感じですかね。ただ、pub/subの設計って、そもそも疎結合のための仕組みだと思うので、メインスレッド側からワーカーを直接コントロールしたいという要件自体が、あまりpub/sub向きではない(ほかの通信方法のほうが向いてる)という気がします。

回答を投稿

redisのインスタンス(=redisへの接続)は、複数のスレッドで共有しないものだと思います。たとえば、forkして親子プロセスで同じ接続が共有されているとInheritedErrorになります。

メインスレッドと、Thread.newした側と、両方でRedis.newして、計2本の接続を持たせるのでどうですか?

redisのインスタンス(=redisへの接続)は、複数のスレッドで共有しないものだと思います。たとえば、forkして親子プロセスで同じ接続が共有されているとInheritedErrorになります。

メインスレッドと、Thread.newした側と、両方でRedis.newして、計2本の接続を持たせるのでどうですか?