【EasyNetQ】- 控制队列名称
在为队列生成名称时,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】- 控制队列名称的更多相关文章
- EasyNetQ使用(五)【基于主题的路由,控制队列名称】
RabbitMQ有一个很酷的功能,基于主题的路由,这个功能允许订阅者基于多个条件去过滤消息.一个主题是由点号分隔的单词列表,随消息一同发布.例如:“stock.usd.nyse” 或 “book.uk ...
- 10-EasyNetQ之控制队列名称
EasyNetQ默认行为,当生成队列的名称时,使用消息类型名+subscription Id.例如:PartyInvitation 这个消息类型,命名空间为 EasyNetQ.Tests.Integr ...
- 7,EasyNetQ-控制队列名称
EasyNetQ在为队列生成名称时的默认行为是使用 消息类型名称+subscription Id 例如,名称空间EasyNetQ.Tests.Integration中的PartyInvitatio ...
- NServiceBus 更换服务名及队列名称
可以通过起动时的参数处理 NServiceBus.Host.exe /serviceName:”服务名称” /endpointName:”默认队列名称”
- Dynamics 365 We API ODATA语法根据父记录查询子记录,根据子记录查询父记录(附上根据团队,队列名称查成员)
微软动态CRM专家罗勇 ,回复333或者20190508可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 先举个N:N关系的例子.这里以根据团队的名称查找其所有团队成员的 ...
- springboot+RabbitMQ 问题 RabbitListener 动态队列名称:Attribute value must be constant
因为多机环境fanout广播模式,每台机器需要使用自己的队列接受消息 所以尝试使用以下的方案 private static final String QUEUE_NAME="foo.&quo ...
- 【框架学习与探究之消息队列--EasyNetQ(2)】
声明 本文欢迎转载,系博主原创,本文原始链接地址:http://www.cnblogs.com/DjlNet/p/7654902.html 前言 此文章,是承接上篇:[框架学习与探究之消息队列--Ea ...
- 使用EasyNetQ组件操作RabbitMQ消息队列服务
RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现,是实现消息队列应用的一个中间件,消息队列中间件是分布式系统中重要的组件,主要解决应用耦合, ...
- .NET Core微服务之基于EasyNetQ使用RabbitMQ消息队列
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.消息队列与RabbitMQ 1.1 消息队列 “消息”是在两台计算机间传送的数据单位.消息可以非常简单,例如只包含文本字符串:也可以更 ...
随机推荐
- js中判断数组中是否包含某元素的方法
方法一:array.indexOf(item,start):元素在数组中的位置,如果没与搜索到则返回 -1. 参数 描述 item 必须.查找的元素. start 可选的整数参数.规定在数组中开始检索 ...
- ABAP术语-Business Framework
Business Framework 原文:http://www.cnblogs.com/qiangsheng/archive/2007/12/28/1017922.html Integrated, ...
- 通过xshell在linux上安装solr4.10.3
通过xshell在linux上安装solr4.10.3 0)下载linux下的安装包 1)通过xftp6上传到linux上 3)在xshell下依次执行 解压命令:tar xvfz solr.tgz( ...
- 转:Zookeeper客户端Curator使用详解
原文:https://www.jianshu.com/p/70151fc0ef5d Zookeeper客户端Curator使用详解 前提 最近刚好用到了zookeeper,做了一个基于SpringBo ...
- 【Linux】wget: command not found的两种解决方法
1.rpm 安装 下载wget的RPM包: http://mirrors.163.com/centos/6.8/os/x86_64/Packages/wget-1.12-8.el6.x86_64.rp ...
- 汇编:采用址表的方法编写程序实现C程序的switch功能
//待实现的C程序 1 void main() { ; -) { : printf("excellence"); break; : printf("good") ...
- Array-快餐管饱
一.如何获得一个数组? rsp: 1. [] 2.new Array() 3.str.split() ps:new Array()可以不加括号,其传一个参数代表数组长度,两个及以上就是初始化数组. ...
- 吐血分享:QQ群霸屏技术教程2017(活跃篇)
热门词的群排名,在前期优化准备充分的情况下,活跃度不失为必杀技. 在<吐血分享:QQ群霸屏技术(初级篇)>中,我们提及到热门词的群排名,有了前面的基础,我们就可以进入深度优化,实现绝对的霸 ...
- C#中在WebClient中使用post发送数据实现方法
很多时候,我们需要使用C#中的WebClient 来收发数据,WebClient 类提供向 URI 标识的任何本地.Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法 ...
- Nginx反向代理 Laravel获取真实IP地址(PHP)
使用VUE前后端分离开发 后端使用Laravel 想要获取到用户的真实IP地址 因为分离开发不同源跨域问题 所以只能进行前端Nginx反向代理 location /api { rewrite ^/a ...