我希望我的 RabbitMQ 应用程序在假定消息已发布之前等待发布者确认。这可以通过将通道设置为确认模式然后等待待处理消息被确认来实现。
如果我想定义一个自定义超时(例如 10 秒),并且在时间过去后,应用程序应该打印一条错误消息,以防留下未确认的消息。
使用PHPAMQPLib v2.6.2 到目前为止我已经尝试在nack 处理程序中通过$this->channel->set_nack_handler($callBack)
where$callBack
是一个处理错误日志记录的函数来实现这个逻辑。问题是我无法判断这种方法是否有效。
在类初始化方法中,我有:
$this->channel->confirm_select();
在处理消息发布的方法中,我有:
$this->channel->wait_for_pending_acks(static::CONFIRM_TIMEOUT);
上述常数CONFIRM_TIMEOUT
设置为 10 秒。