我们正在检查RabbitMQ的一些工作流用例。
到目前为止,我们创建了一个符合我们需求的ruby测试环境,似乎工作正常。
如果是兔子新手,我的问题是关于最佳/良好实践。
让我们定义3个QUEUES(仅用于示例)
每个制作人都会在Q_DECISION中发布消息
有一个工作人员在该队列上运行,检查身体的某些内容。如果做出决定,则必须将消息/任务移至Q_LEFT或Q_RIGHT。
我们正在存储消息特定信息properties.headers,所以我们重复它们以及正文。
到目前为止没有问题,现在的问题是重新发布:
q_decision.subscribe(:block => true) do |delivery_info, properties, body|
# ... more code here
if (decision_left)
q_left.publish(body, :headers => properties.headers, :persistent => true)
end
end
如果我们像上面那样重新发布,我们是否会从之前的消息中删除一些内容?
delivery_info
和properties
中定义/存储了很多属性。
我们是否必须重新发布它们或仅重新发布自己创建的标题和正文?
答案 0 :(得分:1)
邮件正文和邮件标题是两回事。我会假设兔子或任何客户端库将与您传递的正文一起创建一条新消息。这意味着您还需要重新设置要传递到下一个队列的标头。