1. 什么时候使用ActiveMQ
1. 异步通信
2. 一对多通信
3. 做个系统的集成,同构,异构
4. 作为RPC的替代
5. 多个应用相互解耦
6. 作为事件驱动架构的幕后支撑
7. 为了提高性能的可伸缩性
2. ActiveMQ的优化 2.1 ActiveMQ的性能依赖的因素 1.网络拓扑结构,比如;嵌入、主从复制、网络连接。
2.transport协议
3.service的质量,比如topic还是queue,是否持久化,是否需要重新投递,消息超时等
4.硬件、网络、jvm和操作系统等
5.生产者的数量,消费者的数量
6.消息分发要经过的destination数量,以及消息的大小等
非持久化消息比持久化消息更快,原因如下:
1.非持久化的消息发送时异步的,Producer不需要等待consumer的receipt消息
2.持久化消息是需要先把消息存储起来,然后再传递
尽量使用异步投递消息,示例如:
cf.setUserAsyncSend(true);
Transaction比Non-transaction更快
可以考虑内嵌启动broker,这样应用和broker之间可以使用VM协议通讯,速度快
尽量使用基于文件的消息存储方案,比如使用KahaDB的方式