RabbitmQ在主题交换上使用什么算法进行模式匹配

Sid*_*Sid 3 routing rabbitmq data-structures

的RabbitMQ的话题交换(这里解释http://www.rabbitmq.com/tutorials/tutorial-five-python.html)允许使用密钥如路由weather.US.newyorkweather.US.**为外卡的选择.它在内部使用什么样的算法和数据结构来对传入的消息密钥进行模式匹配.

它用于存储队列绑定密钥的数据结构是什么?它是如何与传入的路由键进行比较的.

小智 6

RabbitMQ的人写了几篇博客文章,详细介绍了他们如何进行主题路由:

总而言之 - 似乎(至少从版本2.4开始),它们使用trie - 树数据结构,在下一个节点存储绑定密钥的每个段.

虽然他们没有明确用于遍历trie的算法,但为了应对*和#用于通配符选择,有必要回溯通过trie来捕获所有可能的匹配.然而,这种开销可能很低,特别是在最简单的情况下,并且上面第二篇文章的基准测试表明,trie比其他优化的数据结构更快,以避免回溯.