【发布时间】:2013-02-20 07:20:57
【问题描述】:
注意:在Symfony2 中通过RabbitMQBundle 使用RabbitMq。
我的制作人发送这样的消息:
$message = array(
'class' => get_class($receiver),
'id' => $receiver->getId(),
'stepNumber' => 1,
'errorCount' => 0
);
消费者从数据库中检索$receiver并向他发送电子邮件。
public function execute(AMQPMessage $msg)
{
//Step1 - retrieve user from db
//Step2 - send email
//Step3 - update stuff in database
}
为了跟踪错误,我想在每个步骤中处理异常。如果在第 3 步抛出异常,我想将stepNumber 修改为 3,将$msg 中的errorCount 增加1,最后通过返回false 将$msg 重新排队。
这样有以下优点:
- 当消费者再次处理消息时,它不会再次发送电子邮件。
- 当
errorCount > 5,我只是丢弃消息..return false。
这很好,但是:
有没有办法在RabbitMQ重新排队之前修改$msg?
【问题讨论】:
标签: symfony rabbitmq message-queue amqp