Не могу опубликовать, потому что предисловие находится в режиме подписчика (Laravel) - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть класс команд под названием RedisSubscribe.php в Laravel 5.7. Я хочу иметь возможность подписаться на 'message-channel', сделать что-то с сообщением и затем опубликовать сообщение, используя redis для 'test-channel'. Все хорошо, пока я не опубликую на тестовом канале. Redis, конечно, может только подписываться или публиковаться, но не делать и то, и другое, и в результате я получаю следующее сообщение об ошибке: «Только ERR (P) ПОДПИСАТЬСЯ / (P) НЕ ПОДПИСАТЬСЯ / PING / QUIT разрешено в этом контексте».

Итак, я знаю, что в node.js вы можете легко сделать это, создав два отдельных экземпляра ioredis, используя следующий код

var Redis = require('ioredis');
var subscriber = new Redis();
var publisher = new Redis();

Как сделать что-то эквивалентное в PHP?

Мой код в настоящее время выглядит следующим образом

public function handle()
    {
        Redis::subscribe(['message-channel'], function ($message){
            Redis::connection('my-connection');
            Redis::publish('test-channel', $message);
        });
    }
}

Очевидно, я не использую Redis :: connection правильно, потому что я все еще получаю то же сообщение об ошибке.

'my-connection' в файле базы данных выглядит следующим образом:

'my-connection' => [
    'host' => env('REDIS_HOST', '127.0.0.1'),
    'password' => env('REDIS_PASSWORD', null),
    'port' => env('REDIS_PORT', 6379),
    'database' => env('REDIS_DB', 0),
],
...