zoukankan      html  css  js  c++  java
  • 10-EasyNetQ之控制队列名称

    EasyNetQ默认行为,当生成队列的名称时,使用消息类型名+subscription Id。例如:PartyInvitation 这个消息类型,命名空间为 EasyNetQ.Tests.Integration,生成的队列名称为: EasyNetQ.Tests.Integration.PartyInvitation:EasyNetQ.Tests_schedulingTest1,这里假设subscription Id为 schedulingTest1.

    控制队列名称

    控制队列名称,用Queue attribute 在消息类上去注释。

    [Queue("TestMessagesQueue", ExchangeName = "MyTestExchange")]
    public class TestMessage
    {
       public string Text { get; set; }
    }
    
    // ...
    
    bus.Subscribe<TestMessage>(string.Empty, 
            msg => Console.WriteLine(msg.Text));
    

    这里我们告诉EasyNetQ要用TestMessagesQueue作为队列名,用MyTestExchange作为交换机名字。注意:传给Subscribe方法的subscriptionsId参数为空。假如你指定了subscriptionId,那么subscriptionId将会追加到队列名的后面。

    让不是通过EasyNetQ发布的消息运作起来

    使用QueueAttribute允许消费来至于任何队列的消息。这可以用来消费来至于其他非EasyNetQ的框架发布的消息,只要满足一个条件:队列中消息有type属性设置。type 属性值被用在序列化消息时去决定消息的类型。只要这个属性设置为一些有意义的,这个消息就可以被消费。解码type名是在ITypeNameSerializer.Deserialize方法中做的。

    如果你决定用自己的ITypeNameSerializer实现,那么要小心你如何去执行反序列化方法,假如你的实现是CPU计算密集型的,那么是危险的会限制你出队消息的速度。比如,程序集扫描没有类型缓存是一个坏主意。

    命名队列注意事项

    设置队列名称为空字符串将会使用默认命名规则。队列名最大255个字符(这是RabbitMQ client 类库强制规定)。队列名称可以是字母,数字,-,下划线_,点号.,或冒号:。队列名称以“amq.”开头,是预留的,为了预定义和标准化队列。

    英文地址:https://github.com/EasyNetQ/EasyNetQ/wiki/Controlling-Queue-names
    本文地址:http://www.cnblogs.com/HuangLiang/p/EasyNetQ_Controlling_Queue_names.html

  • 相关阅读:
    熔断器Hystrix
    面向对象
    基础语法
    为什么需要定义数据类型???
    集成Ribbon的客户端调用工具——Feign
    Ribbon实现客户端负载均衡
    入门神经网络-Python 实现(下)
    代码视角-神经网络-Python 实现(上)
    归纳方法
    神经网络-反向传播BP算法推导
  • 原文地址:https://www.cnblogs.com/HuangLiang/p/EasyNetQ_Controlling_Queue_names.html
Copyright © 2011-2022 走看看