美文网首页
RabbitMQ in C# 【路由模式1】

RabbitMQ in C# 【路由模式1】

作者: 王清水 | 来源:发表于2021-02-08 22:30 被阅读0次

Productor -> ExChange ->[queue1, queue2...]  <- Consumer

    ExChange

    类型1:
    Direct  创建路由key,该类型可以定义发送绑定了路由key的queue【路由和queue绑定时定义routingKey】,可实现复杂系统的日志系统;

    类型2:
    Fanout 发布订阅/观察者模式,该类型无需绑定routingKey,所有消费队列的消费者都会可以消费消息;可实现广播消息需求;

    类型3:
    Topic 在Direct基础上添加模糊匹配【绑定时添加设置routingKey】,*匹配一个单词,#匹配多个单词;发送消息时,使用规则内的字符描述routingKey即可完成该类型;

    类型4:
    Headers 采用Muliple attribute 代替routingKey,使用headers进行匹配【当x-match设置成any,只需要一个header value匹配即可,设置all则需要所有的values都必须匹配,官网:they can be used as direct exchanges where the routing key does not have to be a string, it could be an integer or a hash(dictionary) for example;

    Headers 路由模式实例

    这里我们假设已经存在了一个消息队列 MyHeaderQueue和一个Header 类型的ExChange: MyHeadersExChange以及一个channel
    绑定时代码:
channel.QueueBind("MyHeaderQueue", "MyHeadersExChange", string.Empty, new Dictionary<stirng, object>() {
        {“x-match”: "any"},
        {"UserName", "王清水"}
        //...这里可以继续添加多个
    });

    发布时代码:
var properties = channel.CreateBasicProperties();
 properties.Header = new Dictionary<string, object>();
 properties.Header.Add("UserName", "王清水");
 channel.BasicPublish("MyHeadersExChange", routingKey: string.Empty, basicProperties: properties, body: "你发送的Msg")

相关文章

网友评论

      本文标题:RabbitMQ in C# 【路由模式1】

      本文链接:https://www.haomeiwen.com/subject/omymtltx.html