在为队列生成名称时,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. fjutacm 2492 宠物收养所 : Splay 模板 O(nlogn)

    /** problem: http://www.fjutacm.com/Problem.jsp?pid=2492 Splay blog: https://tiger0132.blog.luogu.or ...

  2. rhel7-NFS服务搭建

    检查服务: [root@localhost ~]# systemctl status nfs● nfs-server.service - NFS server and services   Loade ...

  3. 齐博cms最新SQL注入网站漏洞 可远程执行代码提权

    齐博cms整站系统,是目前建站系统用的较多的一款CMS系统,开源,免费,第三方扩展化,界面可视化的操作,使用简单,便于新手使用和第二次开发,受到许多站长们的喜欢.开发架构使用的是php语言以及mysq ...

  4. uva 12096 - The SetStack Computer(集合栈)

    例题5-5 集合栈计算机(The Set Stack Computer,ACM/ICPC NWERC 2006,UVa12096) 有一个专门为了集合运算而设计的"集合栈"计算机. ...

  5. linux c fgetc()

    今天练习代码的时候碰见这样一个问题: 一个文件test.txt,文件内容为 1 2 4 5 在程序中读写这个文件,修改其内容,添加一行,将文件内容变成: 1 2 3 4 5 楼主的错误代码是这样的: ...

  6. xshell怎样打印

    Xshell提供用本地打印机打印终端窗口文本的功能.在Xshell打印时可以沿用终端窗口使用的字体及颜色.且在页面设置对话框可以设置打印纸的边距. 如何设置打印纸的大小和方向: 1.打开xshell ...

  7. CSS3实现3d菜单翻转

    transform-style:flat | preserve-3d: 3d透视属性.针对子元素如何在3d空间相对其父元素渲染,这个属性声明在父元素上,并且他的子元素使用了transform才会有效. ...

  8. Java 图像处理框架-Marvin

    网上看到,摘录过来的,暂时还没涉足这方面的东西 Marvin 1.4.5 的插件接口支持处理多个图像作为输入,新的插件可通过多个图片来确认背景,新的插件可使用多个图片来合并相同场景. Marvin 是 ...

  9. 关于C#数据类型自己的理解

    电脑CUP处理程序的运行.cpu里分为一级缓存,二级缓存,还有三级缓存,之后是内存里的东西. 栈存放在一级缓存里,所以cup调用速度最快,处理起来也效率也最高,但是大小很小,能存放的东西很少. 堆存放 ...

  10. Qt HUD(平显)演示程序绿色版

    把一个黑底白字的程序改成黑底绿字 上对比图,左侧是原本,右侧是仿造,有些地方比例还是有问题 其实这个程序没有啥技术含量,就是画 #include "mainwindow.h" #i ...