我们正在微服务架构中工作,并且使用RabbitMQ作为消息代理。我们希望避免发生以下情况:1.一个实体开始创建,但需要一段时间才能完成。1.系统确定创建时间过长,并且由于超时而应删除实体,因此它发送消息以删除当前仍在创建的实体1.删除消息被使用,系统检查实体是否存在,但由于实体仍在创建过程中,因此未找到该实体。1.由于找不到实体,删除实体消息使用者返回错误。如何确保在create消息完成后使用delete消息,而不会阻塞其他消息的使用?
create
delete
iqih9akk1#
如何确保在创建消息完成后使用删除消息,而不会阻塞其他消息的使用?假设你的实体创建超时是N。负责创建实体的工作者应该知道这个超时,并且应该能够在达到N时取消实体创建。这不是严格必要的,但听起来你的实体创建可能是资源密集型的,所以取消应该是你的一个功能。如果您的工作人员知道在达到超时N时取消实体创建,那么也许您甚至不需要删除消息?如果保留删除消息,则工作者处理即可能执行以下操作:
requeue
false
count
rabbitmq-users
uqdfh47h2#
2条答案
按热度按时间iqih9akk1#
如何确保在创建消息完成后使用删除消息,而不会阻塞其他消息的使用?
假设你的实体创建超时是N。负责创建实体的工作者应该知道这个超时,并且应该能够在达到N时取消实体创建。这不是严格必要的,但听起来你的实体创建可能是资源密集型的,所以取消应该是你的一个功能。
如果您的工作人员知道在达到超时N时取消实体创建,那么也许您甚至不需要删除消息?
如果保留删除消息,则工作者处理即可能执行以下操作:
requeue
设置为false
。count
属性,并且只尝试删除实体一定的次数。**注意:**RabbitMQ团队监控
rabbitmq-users
邮件列表,仅在某些时候回答StackOverflow上的问题。uqdfh47h2#