我正在使用的工具:
- Symfony 4.1.6
- Symfony Messenger 组件4.1.6
- 入队适配器0.1.2
- Enqueue Google Cloud Pub/Sub Transport 0.8.37
我的配置文件:
#service.yaml
framework:
messenger:
transports:
default: 'amqp://guest:guest@localhost:5672/%2f/messages'
enqueue: 'enqueue://gps'
default_bus: messenger.bus.commands
buses:
messenger.bus.commands: ~
messenger.bus.events: ~
routing:
# Route your messages to the transports
'App\Message\Command\Store\CreateStore': enqueue
.
#enqueue.yaml
enqueue:
transport:
default: 'gps'
gps:
projectId: '%env(GOOGLE_PROJECT_ID)%'
keyFilePath: '%env(GOOGLE_APPLICATION_CREDENTIALS)%'
将消息/命令发送到 Cloud Pub/Sub 队列 OK
我的消息/命令CreateStore
已正确发送到 Cloud Pub/Sub,如下所示:
use App\Message\Command\Store\CreateStore;
use Enqueue\MessengerAdapter\EnvelopeItem\TransportConfiguration;
$command = new CreateStore();
$this->commandBus->dispatch((new Envelope($command))->with(new
TransportConfiguration(
['topic' => 'enqueue.commands']
)));
所有消息/命令都在我的 Cloud Pub/Sub 队列中,我可以看到它们并通过 gcloud 命令行工具手动确认它们,如下所示:
gcloud pubsub subscriptions pull enqueue.commands
gcloud pubsub subscriptions pull enqueue.commands --auto-ack
使用来自 Cloud Pub/Sub 队列的消息 KO
现在我尝试通过运行来使用我的消息:
bin/console messenger:consume-messages enqueue
消费者运行,但没有发生任何事情。
在使用 Cloud Pub/Sub 上可用的消息时,我缺少什么?