首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改rabbitMQ在使用者内部发送的消息

修改rabbitMQ在使用者内部发送的消息
EN

Stack Overflow用户
提问于 2013-02-20 07:20:57
回答 1查看 6.1K关注 0票数 6

注意:在RabbitMq中通过RabbitMQBundle使用Symfony2

我的制片人发出这样的信息:

代码语言:javascript
复制
$message = array(
    'class' => get_class($receiver),
    'id' => $receiver->getId(),
    'stepNumber' => 1,
    'errorCount' => 0
);

消费者从数据库中检索$receiver并发送给他一封电子邮件。

代码语言:javascript
复制
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

这会很好,但是:

$msg被RabbitMQ请求之前,是否有一种修改它的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-20 14:47:37

正如的答案所指出的那样,RabbitMQ不允许您在发布消息后更改它们。当您返回false时,RabbitMQ只是将原始消息放回队列中进行处理。

通过使用所需的更改重新发布消息,然后通过返回true来使用原始消息,可以获得相同的效果。您可能希望使用默认(无名)交换重新发布消息,以便可以将其直接发送到您从其中获得原始消息的队列中。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14974353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档