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