zoukankan      html  css  js  c++  java
  • 6,EasyNetQ-基于Topic的路由

    RabbitMQ具有非常酷的功能,基于主题的路由,允许订阅者基于多个标准过滤消息。 主题是与邮件一起发布的点分隔的单词列表。 例子是“stock.usd.nyse”或“book.uk.london”或“a.b.c”,这些单词可以是你喜欢的任何东西,但通常是消息的一些属性。 主题字符串的限制为255个字符。

    要使用主题发布,只需使用带有主题的重载的Publish方法:

    bus.Publish(message, "X.A");

    订阅者可以通过指定要匹配的主题来过滤邮件。 这些可以包括通配符:

    *:匹配一个字。

    #:匹配到零个或多个单词。

    所以发布的主题为“X.A.2”的消息将匹配“#”,“X.#”,“* .A.*”,而不是“X.B. *”或“A”。 要订阅一个主题,请使用重载的订阅方法与配置:

    bus.Subscribe("my_id", handler, x => x.WithTopic("X.*"));

    警告: 具有相同订阅者但不同主题字符串的两个单独订阅可能不会产生您期望的效果。 subscriberId有效地标识个体AMQP队列。 具有相同subscriptionId的两个订阅者将连接到相同的队列,并且两者都将添加自己的主题绑定。 所以,例如,如果你这样做:

    bus.Subscribe("my_id", handlerOfXDotStar, x => x.WithTopic("X.*"));
    bus.Subscribe("my_id", handlerOfStarDotB, x => x.WithTopic("*.B"));

    匹配“x.*”或“* .B”的所有消息将被传递到“XXX_my_id”队列。 然后,RabbitMQ将向两个消费者传递消息,其中handlerOfXDotStar和handlerOfStarDotB轮流获取每条消息。

     现在,如果你想要匹配多个主题(“X. *”OR“* .B”),你可以使用另一个重载的订阅方法,它采用多个主题,如下所示:

    bus.Subscribe("my_id", handler, x => x.WithTopic("X.*").WithTopic("*.B"));

    有一些主题重载的SubscribeAsync方法的工作方式完全相同。

  • 相关阅读:
    05.Linux Startup & Shutdown
    04.Linux Disk Partition & Mount Point
    03Oracle数据查询(二)
    02Oracle数据查询(一)
    01Oracle数据库系统环境搭建
    02域名的选择技巧与注册实战
    01快速认识阿里云网站建设
    Linux文件操作
    Linux目录操作
    Linux根目录介绍
  • 原文地址:https://www.cnblogs.com/zd1994/p/7169123.html
Copyright © 2011-2022 走看看