对于以下与队列类似的情况,我需要一个解决方案:
我想将消息连续写到队列中。我的邮件非常大,包含大量数据,因此我确实希望发出尽可能少的请求。 因此,我的队列有时会包含很多消息。 我的消费者每隔1小时就会从队列中读取一次。 (并非在写入新消息时),它将从队列中读取所有消息。
问题是我需要一种方法,仅使用一个调用即可读取队列中的所有消息(我还希望使用者对队列的请求尽可能少)。
ActiveMQ是一个紧密的解决方案,但问题是您一次只能读取一条消息,而我需要在一个请求中全部读取它们。
所以我的问题是。还有其他方法可以更有效地做到这一点吗?我需要做的实际事情是以某种方式持久保存某些应用程序连续创建的消息,然后每隔1小时一次将同一应用程序使用它们(也将它们删除)。
我认为适合队列的原因是因为消息被消耗后,它们也被删除了,但我需要立即消耗掉它们。
答案 0 :(得分:0)
我认为您在寻找解决方案时要牢记一些重要的事情:
prefetchSize
,对于ActiveMQ Artemis,为consumerWindowSize
)。这些消息存储在本地的各种缓冲区中,并在进行相关的API调用以接收消息时馈送到客户端应用程序。