rabbitmq系列四 之路由

1、路由

  在上一个的教程中,我们构建了一个简单的日志记录系统。我们能够向许多接收者广播日志消息。

  在本次教程中,我们向该系统添加一些特性,比如,我只需要严重错误(erroe级别)的部分日志打印到磁盘文件中,但是同时仍然把所有的日志打印到控制台。

2、绑定

  在前面的例子中。我们已经用以下的代码创建了绑定。

1 channel.queueBind(queueName, EXCHANGE_NAME, "");
View Code

  绑定是指交换机(exchange)与队列(queue)之间的联系,也可以理解为,当某个队列和某个交换机进行了绑定,那么该队列对该交换机的消息感应器。

  绑定的时候,我们可以提供一个额外的参数routingKey,为了避免与basic_publish的参数混淆,我们可以把它叫做绑定键(binding key),以下是如何创建带绑定键的绑定。

1 channel.queueBind(queueName, EXCHANGE_NAME, "black");
View Code

  绑定键的意义取决于交换机的类型,我们之前使用过的扇型交换机(fanout exchanges)会忽略这个值。

3、直接交换机

  上一篇写的日志系统广播所有的消费者(consumers),我们打算扩展它,基于日志的严重程度进行日志消息过滤,例如我们也许只是希望将比较严重的错误(error)日志写入磁盘,以免在警告(warning)或者信息(info)日志上浪费磁盘空间。

  上一篇中,我们使用的扇型交换机(fanout exchange)是没有足够的灵活性 —— 它能做的仅仅是广播。

  在这里我们要使用直接 交换机进行代替,它的算法很简单——交换机将对绑定键和路由键进行精确匹配,然后决定将消息发送到哪个队列。模型如下图所示。

              

  从上图列子中可以看出,直接交换机x与两个队列Q1、Q2进行绑定,第一个队列使用了orange作为绑定键,第二个队列有两个绑定键,一个使用可black作为绑定键,另外一个使用了green作为绑定键。

  

猜你喜欢

转载自www.cnblogs.com/Hxinguan/p/9190476.html