当前位置: 首页 > 知识库问答 >
问题:

mq慢速持久消息读取

卢伟志
2023-03-14

我正试图追踪一个客户不能以他们应该的速度读取消息的问题。持久消息被写入队列。有时,GET速率比PUT速率慢,我们会看到消息备份。

MQGET: Convert, Fail_If_Quiescing, Accept_Truncated_Msg, Syncpoint, Wait
Message is sent
Notification
MQCMIT
MQCMIT_REPLY

共有1个答案

茅昀
2023-03-14

在接收端增加消息吞吐量的最直接的方法是批处理MQGET操作。也就是说,不要为每个MQGET发出MQCMIT,而是在多次MQGET操作之后发出MQCMIT。MQCMIT是持久消息最昂贵的操作,因为它涉及到强制在队列管理器上写入日志,因此会遇到磁盘I/O延迟。实验批处理大小-我经常使用100,但有些应用程序可以更高。过多未完成的MQGET操作可能会有问题,因为它们会使事务运行更长的时间,并阻止日志切换。

当然,您可以检查系统的整体调优是否令人满意。客户端和队列管理器之间的延迟可能太长,或者日志可能驻留在速度较慢的设备上,或者日志可能与队列文件或繁忙的文件系统共享设备。

 类似资料:
  • “ActiveMQ中Blob消息传递的持久性”? "我们不能使用数据库(KahaDB)来Blob消息URL吗?" “我们可以像在远程activemq服务器中一样在嵌入式代理中创建文件服务器吗?”

  • 消息应答 ack >[danger] noAck: false 手动接收消息模式 async consume() { const ch = await this.app.amqplib.createChannel(); await ch.assertQueue(queueName, { durable: false }); const msg = await new Pro

  • 我正在使用网络逻辑10.3。我正在尝试配置一个持久订阅,其中包含由 jdbc 存储(在 Oracle DB 中)支持的持久消息。我有一个主题,MDB 正在作为持久订阅者侦听该主题。在场景-1下:如果我发送消息,它会命中MDB。 在场景2中:我挂起了MDB,希望发送到主题的消息只要不被MDB(它是唯一注册的持久订阅者)使用,就会一直存在。但是当我向主题发送消息时,它短暂地出现在那里,然后就消失了(我

  • Jboot 内置了对MQ消息队列的功能支持,使用MQ需要以下几步步骤。 第一步:配置jboot.properties文件,内容如下: # 默认为redis (支持: redis,activemq,rabbitmq,hornetq,aliyunmq等 ) jboot.mq.type = redis jboot.mq.channel = channel1,channel2,channel3 jboot

  • 我有疑问一条消息是否会在主题中持续存在,我从这篇文章中得到了大部分答案。 但是这种情况如何呢?假设代理重新开始,一些发布者已经开始向一个主题发送消息,现在将来一些持久订户将与该主题连接,但是当前没有持久订户,因此在代理重新开始的情况下,发布者到目前为止向该主题发送的所有消息都将丢失。 我尝试了上述情况,确实所有的信息都丢失了。此外,我尝试了这种情况——我有一个活跃的持久订阅者,它能够将消息推送到主