消息积压在MQ中是一件很正常的事,但是积压过多了,就可以会导致消息的丢失,甚至系统的崩溃。那我们从事前的预防和事后的处理两个方面去解决。 一、事前预防 我们如何预防消息积压呢,一般就是批量和增加并发这两个方法,发送端和消费端都可以从这两个方面去处理。 1.1 发送端 1.批量。比如一次从数据库中批量 ...
分类:
其他好文 时间:
2020-01-31 00:50:15
阅读次数:
248
消息消费以组的的模式开展; 一个消费组内可以包含多个消费者,每一个消费组可订阅多个主题; 消费组之间有集群模式与广播模式两种消费模式:集群模式-主题下的同一条消息只允许被其中一个消费者消费。广播模式-主题下的同一条消息将被集群内的所有消费者消费一次。集群模式下消息队列负载机制遵循一个通用的思想:一个 ...
分类:
其他好文 时间:
2020-01-28 19:05:48
阅读次数:
88
考虑转发任务未成功执行,此时消息服务器Broker宕机,导致commitlog,consumeQueue,IndexFile文件数据不一致。 看一下mq关于存储文件的加载流程: public boolean load() { boolean result = true; try { boolean ...
分类:
其他好文 时间:
2020-01-27 09:42:08
阅读次数:
85
ConsumeQueue,IndexFile需要及时更新,否则无法及时被消费,根据消息属性查找消息也会出现较大延迟。 mq通过开启一个线程ReputMessageService来准时转发commitLog文件更新事件,相应的任务处理器根据转发的消息及时更新ConsumeQueue,IndexFile ...
分类:
其他好文 时间:
2020-01-27 09:16:46
阅读次数:
82
记录comitlog,consumeQueue,Index文件的刷盘时间点,文件固定长度4k,其中只用该文件的24个字节,其存储格式: 8字节physicMsgtimestamp+8字节logicsMsgTimestamp+8字节indexMsgTimestamp physicMsgtimestam ...
分类:
其他好文 时间:
2020-01-26 23:56:50
阅读次数:
124
消息服务 背景:有时需与其它系统集成来完成相关业务功能,原始的做法是程序内部相互调用,除此之外,还可用消息服务中间件来进行业务处理,使用消息服务中间件处理业务能够提升系统的异步通信和扩展解耦的能力,个人有点面向切面的意思。 一.为什么要使用消息服务? 因为它有很多好处,能解决很多问题; 1.异步处理 ...
分类:
编程语言 时间:
2020-01-26 13:17:33
阅读次数:
94
页面发布课程管理 技术方案 本项目使用MQ实现页面发布的技术方案如下: 技术方案说明:1、平台包括多个站点,页面归属不同的站点。2、发布一个页面应将该页面发布到所属站点的服务器上。3、每个站点服务部署cms client程序,并与交换机绑定,绑定时指定站点Id为routingKey。指定站点id为r ...
分类:
其他好文 时间:
2020-01-23 22:45:27
阅读次数:
970
启动broker之后我们可以看到下面这些文件 1.config包含了运行期间一些配置信息,主要包括下列信息。 consumerFilter.json:主体消息过滤信息 consumerOffset.json:集群消费模式消息消费进度 delayOffset.json:延时消息队列拉取进度 subsc ...
分类:
其他好文 时间:
2020-01-21 15:57:22
阅读次数:
110
总得来说 有些像页告诉缓存那样,为了避免页面被换出到交换区,mq申请了一块内存,并且用指定这些页面不能被操作系统换出,然后将这些内存分配给业务使用: ...
分类:
其他好文 时间:
2020-01-21 14:42:34
阅读次数:
79
使用背景 在实际工作过程中,因网络波动、服务并发限制等原因造成接口服务调用失败,MQ发送消息失败等,可以采取重试手段,重试机制是常见的一种处理问题的手段。 重试方式有很多,如可以自己通过代码逻辑实现,但不是很优雅。 而spring-retry可以以优雅的方式实现重试: Retry重试框架,支持AOP ...
分类:
编程语言 时间:
2020-01-20 20:34:51
阅读次数:
128