关于 ActiveMQ:我有一个场景,我有一个生产者向消费者发送小(大约 10KB)文件。虽然文件很小,但消费者需要大约 10 秒来分析它们并将结果返回给生产者。我进行了很多研究,但仍然找不到以下问题的答案:
- 如何让代理将文件(完全)存储在队列中?
- 我应该使用 ObjectMessage(因为文件很小)还是 blob 消息?
- 因为消费者处理速度很慢,我应该降低他们的 prefetchLimit 还是使用循环调度策略?哪一个更好?
- 最后,在 ActiveMQ 常见问题解答中,我读到了这个 - “如果消费者收到一条消息并且在关闭之前没有确认它,那么该消息将被重新传递给另一个消费者。”。所以我的问题是,ActiveMQ 是否保证只有 1 个消费者会处理消息(因此对生产者只有 1 个答案)?消费者何时确认消息(在默认的自动确认设置中) - 接收消息并将其存储在会话中,还是 onMessage 处理程序完成时?而且,由于消费者的处理速度如此之慢,我是否应该更改一些“超时限制”,以便经纪人知道在将工作交给另一个消费者之前要等待多少时间(这与我之前的问题有关)?