跨php进程唯一分配队列的最佳方法

跨php进程唯一分配队列的最佳方法,php,queue,rabbitmq,Php,Queue,Rabbitmq,我有一组唯一的值,我想给每个请求一个 每个值只能分配一次。顺序并不重要。 我正在寻找一个好的工具来做这件事 我一直在考虑使用MySQL和SELECT。。更新限制为1。有效,有没有办法选择一个未锁定的行,而不是等待第一次锁定释放 我曾尝试使用rabbitmq,将每个请求注册为只使用一条消息的使用者,但这种方法速度很慢。在WAN上花了将近一秒钟的时间 来自评论 连接[到RMQ]时似乎有相当大的延迟 是的,肯定有!在某些情况下,我看到连接需要5到10秒或更长时间 但是,我们管理RabbitMQ的方式应

我有一组唯一的值,我想给每个请求一个

每个值只能分配一次。顺序并不重要。 我正在寻找一个好的工具来做这件事

我一直在考虑使用MySQL和
SELECT。。更新限制为1
。有效,有没有办法选择一个未锁定的行,而不是等待第一次锁定释放

我曾尝试使用rabbitmq,将每个请求注册为只使用一条消息的使用者,但这种方法速度很慢。在WAN上花了将近一秒钟的时间

来自评论

连接[到RMQ]时似乎有相当大的延迟

是的,肯定有!在某些情况下,我看到连接需要5到10秒或更长时间

但是,我们管理RabbitMQ的方式应该是每个应用程序实例都有一个打开的连接——在应用程序实例启动时打开它,并让它永远打开

当我们需要工作时,创建一个工作通道


与连接不同,频道价格便宜,打开和关闭速度非常快。

这很奇怪,通常RMQ非常快。可能消息大小太大了?消息大小只有几个字节。RMQ很快,但在连接时似乎有相当大的延迟(WAN延迟高)。但即使在本地网络上,抓取一条消息也需要0.05秒,这很奇怪。不久前,当我运行测试时,我正在处理大约5-6Kmsg/s,它们是10-50KBsYeah;1消费者可以处理大量信息。问题是,我希望每秒有数千名消费者只处理一条消息。你是说,处理一条消息,然后死亡,还是一次处理一条消息?好主意!目前,我使用的php amqplib似乎不支持这一点。我会调查这件事,让它运作起来。你认为使用RMQ是最好的解决方案吗?