在为队列生成名称时,EasyNetQ的默认行为是使用消息类型名称并将其附加到订阅ID。例如PartyInvitation,命名空间中的消息类型EasyNetQ.Tests.Integration将使用队列名称EasyNetQ.Tests.Integration.PartyInvitation:EasyNetQ.Tests_schedulingTest1,假设订阅ID为schedulingTest1

命名约定

您可以通过实现IConventions或继承默认约定来创建自己的自定义命名约定,并在服务容器中注册此实现:

public class MyConventions : Conventions
{
public MyConventions(ITypeNameSerializer typeNameSerializer) : base(typeNameSerializer)
{
ErrorQueueNamingConvention = messageInfo => "MyErrorQueue" ;
}
}
var bus = RabbitHutch.CreateBus(connectionString, services => services.Register(c => new MyConventions()));

另见:https://github.com/EasyNetQ/EasyNetQ/wiki/Replacing-EasyNetQ-Components

控制队列名称

要控制单个队列的名称,请使用以下Queue属性注释消息类:

[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方法的subscriptionId为空。如果指定subscriptionId,则它将附加到末尾并用作队列名称。

使用EasyNetQ未发布的消息

使用QueueAttribute允许使用来自任何队列的消息。这可用于消耗由EasyNetQ以外的框架发布的消息,只要满足一个条件 - 队列消息具有属性type集。type在消息反序列化期间使用属性值来确定消息的类型。只要将此属性设置为有意义的内容,就可以使用消息。解码类型名称在ITypeNameSerializer.Deserialize方法中完成。

如果您决定实现自己的自定义,请ITypeNameSerializer注意如何实现该Deserialize方法。如果您的实现是处理器密集型的,那么您就有可能限制可以使消息出列的速度。例如,没有某种类型的缓存,程序集扫描是一个坏主意。

命名队列的注意事项

将队列名称设置为空字符串将使用默认命名行为。队列名称的最大长度为255个字符(这由RabbitMQ客户端库强制执行)。名称可以是字母,数字,连字符,下划线,句点或冒号的序列。队列名称以“amq”开头。保留用于预先声明和标准化的队列

【EasyNetQ】- 控制队列名称的更多相关文章

  1. EasyNetQ使用(五)【基于主题的路由,控制队列名称】

    RabbitMQ有一个很酷的功能,基于主题的路由,这个功能允许订阅者基于多个条件去过滤消息.一个主题是由点号分隔的单词列表,随消息一同发布.例如:“stock.usd.nyse” 或 “book.uk ...

  2. 10-EasyNetQ之控制队列名称

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

  3. 7,EasyNetQ-控制队列名称

    EasyNetQ在为队列生成名称时的默认行为是使用   消息类型名称+subscription Id 例如,名称空间EasyNetQ.Tests.Integration中的PartyInvitatio ...

  4. NServiceBus 更换服务名及队列名称

    可以通过起动时的参数处理 NServiceBus.Host.exe /serviceName:”服务名称” /endpointName:”默认队列名称”

  5. Dynamics 365 We API ODATA语法根据父记录查询子记录,根据子记录查询父记录(附上根据团队,队列名称查成员)

    微软动态CRM专家罗勇 ,回复333或者20190508可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 先举个N:N关系的例子.这里以根据团队的名称查找其所有团队成员的 ...

  6. springboot+RabbitMQ 问题 RabbitListener 动态队列名称:Attribute value must be constant

    因为多机环境fanout广播模式,每台机器需要使用自己的队列接受消息 所以尝试使用以下的方案 private static final String QUEUE_NAME="foo.&quo ...

  7. 【框架学习与探究之消息队列--EasyNetQ(2)】

    声明 本文欢迎转载,系博主原创,本文原始链接地址:http://www.cnblogs.com/DjlNet/p/7654902.html 前言 此文章,是承接上篇:[框架学习与探究之消息队列--Ea ...

  8. 使用EasyNetQ组件操作RabbitMQ消息队列服务

    RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现,是实现消息队列应用的一个中间件,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合, ...

  9. .NET Core微服务之基于EasyNetQ使用RabbitMQ消息队列

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.消息队列与RabbitMQ 1.1 消息队列 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ...

随机推荐

  1. flask笔记(一)

    1.第一个flask项目 # 首先你要安装flask这个模块 pip install flask # 安装好了之后,直接新建一个py文件,开始写最简单的flask项目了 from flask impo ...

  2. MySQL字段的属性应该尽量设置为NOT NULL

    数据库建表时,对于一些可填可不填的字段,我们应该尽量把它设置为 NOT NULL.这种做法即可以提高性能,又可以在很大程度上避免空指针类的问题,好处颇多. 1.节省空间 NULL 列需要更多的存储空间 ...

  3. 前端之Vue.js库的使用

    vue.js简介 Vue.js读音 /vjuː/, 类似于 view Vue.js是前端三大新框架:Angular.js.React.js.Vue.js之一,Vue.js目前的使用和关注程度在三大框架 ...

  4. javascript--鼠标拖拽窗口案例(鼠标按下,在鼠标移动过程中,盒子跟着一起移动,鼠标松开,盒子停止移动)

    界面如图所示: 要求:在“信息注册”栏,按下鼠标,然后鼠标在页面移动,在鼠标移动过程中,该窗口跟着鼠标移动,当鼠标松开的时候,窗口停止移动.点击“关闭”,该窗口隐藏. 实现思路: 1.页面结构分析:一 ...

  5. 汇编:将指定的内存中连续N个字节填写成指定的内容

    1.loop指令实现 ;=============================== ;循环程序设计 ;将制定内存中连续count个字节填写成指定内容(te) ;loop指令实现 DATAS SEG ...

  6. Java OOP——第四章 异常

    1. 接口:接口就是给出一些没有内容的方法,封装到一起,到某个类要使用的时候,在根据具体情况把这些方法写出来. 接口是更加抽象的抽象的类, 抽象类里的方法可以有方法体, 接口里的所有方法都没有方法体. ...

  7. Windows 10 登录界面的背景图片地址

    C:\Users\******\appdata\Local\Packages\Microsoft.Windows.ContentDeliveryManager_********\LocalState\ ...

  8. python的基本知识,range在python2.x中和python3.x中的区别

    这些是最开始学习python时的笔记,今天整理一下,在这里记录一下. 各种基础代码解释 for key,item in enumerate(li): print(key,item) inp=input ...

  9. golang的加法比C快?

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/142 1.31 晚上的火车回家,在公司还剩两个小时,无心工作,本 ...

  10. 前端面试题目汇总摘录(HTML 和 CSS篇)

    温故而知新,保持空杯心态 HTML 和 CSS 你做的页面在哪些浏览器测试过?这些浏览器的内核分别是什么 浏览器名称 内核 IE trident Firefox(火狐) gecko Safari we ...