• 【EasyNetQ】- 基于topic的路由


    RabbitMQ具有非常酷的功能,基于主题的路由,允许订户根据多个标准过滤消息。主题是由与消息一起发布的点分隔的单词列表。例如,“stock.usd.nyse”或“book.uk.london”或“abc”,这些单词可以是您喜欢的任何内容,但通常是该消息的某些属性。主题字符串的长度限制为255个字符。

    要使用主题发布,只需将重载的Publish方法与主题一起使用:

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

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

    *(星号)恰好匹配一个单词。

    #(hash)匹配零个或多个单词。

    因此,以“XA2”主题发布的消息将匹配“#”,“X。#”,“* .A。*”但不匹配“XB *”或“A”。要订阅主题,请使用重载的Subscribe方法和配置:

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

    一个警告具有相同subscriberId但不同主题字符串的两个单独订阅可能不会产生您期望的效果。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. *”或“* .B”),你可以使用带有多个主题的Subscribe方法的另一个重载,如下所示:

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

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

    有关主题的更多警示故事,请参阅此博客帖子Topic Confusion,但请注意该示例使用旧版本的API,您必须在调用Publish之前打开发布频道。

  • 相关阅读:
    js日期加减得到新的日期的自定义函数
    c# winform 一个可以用鼠标改变控件位置和大小的类,调用即可
    颜色英文代码全集
    你的Web系统有多少安全漏洞
    robots协议和禁止搜索引擎收录
    Linux下./configure错误详解
    c# winform 关于DataGridView的一些操作
    通过JSONP实现完美跨域
    tabs选项卡
    jQuery 1.4的十五大新功能实例精讲
  • 原文地址:https://www.cnblogs.com/wangwust/p/9437397.html
Copyright © 2020-2023  润新知