我正在使用带有我的webcrawler的ampq队列 - 每个爬虫实例将从队列中的消息中获取一个URL,然后将它找到的URL添加到队列中.
由于将有多个爬虫实例,每个实例都可以找到相同的URL并将其添加到队列中.
是否有内置的方法告诉rabbitmq如果知道url就丢弃消息,或检查队列是否已存在带有url的消息?
号有没有办法检查消息RabbitMQ的机制独特性.
AMQP队列,尤其是RabbitMQ队列是纯FIFO队列.
可能,您必须在应用程序端实现唯一性检查.
PS:
有一个很好的解决方法来声明与唯一字段(或它的哈希)同名的队列x-max-length
设置为1,因此如果队列中有未处理的消息,则重复项将丢失.但这需要大量队列与url(唯一字段 - url哈希),因此不是最好的解决方案,特别是当它消耗来自数千个具有非显而易见名称的队列的所有消息时.