messagequeue是什么,messagequeue的功能
今天小编为大家分享Windows系统下载、Windows系统教程、windows相关应用程序的文章,希望能够帮助到大家!
RocketMQ是通过MQFaultStrategy的selectOneMessageQueue方法来选择发送队列的
我们先来看下MQFaultStrategy中重要的属性
我们来看开启了延迟容错的逻辑:
selectOneMessageQueue选择队列的基本逻辑我们已经了解了,现在来具体看下LatencyFaultToleranceImpl是怎么来维护这些broker的可用性和延迟的呢?
主要属性faultItemTable和内部类FaultItem
顾名思义这是一个延迟对象List,key为broker,value为FaultItem,FaultItem中存储了该broker的name,延迟界别和延迟开始的时间。
如果faultItem中不存在该broker,返回true,当存在时,还需判断isAvailable
我们可以看到这里计算了某个broker的发送时间,然后根据这个时间去更新FaultItem
这里根据延迟时间对比MQFaultStrategy中的延迟级别数组latencyMax不可用时长数组notAvailableDuration来将该broker加进faultItemTable中。
1.所有的broker延迟信息都会被记录
2.发送消息时会选择延迟最低的broker来发送,提高效率
3.broker延迟过高会自动减少它的消息分配,充分发挥所有服务器的能力
1、visit般指树型链表结构某节点内容进行访问函数取节点内容做某件事通算写具体函数内容
2、树型链表结构自顶始按照某种顺序顺藤摸瓜至某节点程称遍历:
3、void traverse(link h, void visit(link))
4、非递归基于栈函数与面递归函数功能相等
5、void traverse(link h, void visit(link))
6、if(h->l!= 0) s.push(h->l);
7、if(h->r!= 0) s.push(h->r);
8、前序遍历基本数据结构栈转变队列转变使遍历转层顺序
9、void traverse(link h, void visit(link))
10、if(h->l!= 0) q.put(h->l);
11、if(h->r!= 0) q.put(h->r);
wwW.Xtw.Com.cN系统网专业的PC、手机系统开发下载平台,HarmonyOS系统、安卓、OS、windows电脑重装系统在线下载安装,操作系统平台技术学习,攻略教程,技术交流。
免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!
联系邮箱:773537036@qq.com