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