rabbitMQ学习笔记(五)——通配符模式

时间:2024-03-22 22:13:57

介绍


rabbitMQ学习笔记(五)——通配符模式
Topics和Routing的基本原理相同,即:生产者将消息发给交换机,交换机根据routingKey将消息转发给与routingKey匹配的队列。
不同之处是: routingKey的匹配方式, Routing模式是相等匹配, topics模式是统配符匹配。

符号# :匹配一个或者多个词(每个词中间以.分隔),比如inform. # 可以匹配inform.sms、inform.email、inform.email.sms。

符号* :只能匹配一一个词, 比如inform.* 可以匹配inform.sms、inform.email

实现过程十分简单,这里讲一下通配符的使用场景:
假设一个网站注册业务,当用户注册成功时,网站需要向用户发送消息提示注册成功,有三种方式分别发给三种用户。
第一种:仅发送手机短信给用户提示注册成功。
第二种:仅发送邮箱给用户提示注册成功。
每一种方式分别对应一个队列。而每个队列又有相应的消费者消费。

而通配符方式意义就在于通过消息发送方的routingKey,就可以选择一个或者多个队列进行发送。(注意:路由模式仅能选择一个,通配符方式可选择多个)

回到上面的例子。
第一种的routingKey设置为:inform. #. email. #。
第一种的routingKey设置为:inform. #. SMS. #。
此时发送方发送消息的routingKey为inform.email时,表明要通过email提示,匹配到第一种方式的routingKey(#可为空)。则消息会送到第一种方式的队列中。
若消息发送方的routingKey为inform.SMS时,表明要通过SMS提示,匹配到第二种方式的routingKey。则消息会送到第二种方式的队列中。
若消息发送方的routingKey为inform.email.SMS时,表明要通过email和SMS提示,两种方式的routingKey都能匹配到。则消息会送到第一种、第二种方式的队列中。


实现


实现不多说,在申明交换机时选择Topics模式,并且在绑定通道时routingKey写成通配符,最后在发送消息处写具体的routingKey。