JVM(客户端)通过ActiveMQ消息队列将大量事件数据发送到另一个JVM(服务器)。 ActiveMQ服务器嵌入在服务器JVM中。如果消息量太大,则客户端JVM需要将消息保留在本地内存高速缓存中,如果高速缓存溢出,则需要将消息保留在文件系统中。同时,另一个线程需要从文件/缓存中读取数据并将其发送到服务器jvm。 我的问题是:实现这个的最佳方法是什么?内存映射I / O会有帮助吗?我需要在本地文件进入服务器后删除它们。
答案 0 :(得分:0)
我会尽量避免使用逻辑来缓存/持久化客户端上的消息,因为这样会使事情变得更复杂,并且您有点复制服务器中发生的相同功能。首先,您需要定义预期的最大音量,并检查AMQ是否可以处理该音量。尝试调整AMQ以处理高容量并使用其持久性功能,但所有这些都将在服务器上。
如果您丢失信息,您似乎并不在乎,因为您愿意将它们留在客户的记忆中。如果是这种情况,您可以优化AMQ中的某些内容以获得更好的吞吐量。以下是指南:
http://activemq.apache.org/performance-tuning.html
如果您仍然觉得需要在客户端缓存/保留邮件,我会看到以下选项:
我会去2或3做更多关于3的研究,以找到合适的框架。