http://activemq.apache.org/should-i-deploy-the-broker-inside-my-jvm-or-appserver.htmlhtml
你能将ActiveMQ Broker内嵌到JVM或者应用服务器之中。java
这取决于多少的JVMS以及你的备份和还原策略。数据库
嵌入式broker的优点:apache
1 嵌入式broker能够使用VM transport,而不须要使用序列化和sockets。VM transport能够代替AcitiveMQ经过value来传输Messages。服务器
这种ObjectMessage可能出现少部分异常状况。JMS规范要求你必须序列化ObjectMessage 的body,不管是否发送。app
你能够选择禁用这个特性,若是你在使用VM transport时想要更高的性能。jvm
2 它只须要单独部署在nuit/JVM中,而不是2台。socket
嵌入式broker的劣势:ide
若是你有不少的JVMs(虚拟机),我说的是100个左右量级而且成功率要求很高的状况下,你不但愿丢失Message,因此你须要备份并持久化Message到数据库或者文件中。性能
以上状况下,一个嵌入式broker中每一个JVM都能处理大量的Message,或许你能够简单的将其中2个进行分离识别,当100个jvm与一个较小的broker集群进行交互时,处理每一个jvm的持久化区、服务器崩溃、管理持久化文件/和数据库会是一个困扰。
将ActiveMQ brokers分别运行和管理相对容易。或许你会有一些ClassLoader的故障但你将ActiveMQ嵌入一个应用服务器(application server)好比这样:
java.lang.NoSuchMethodError:
javax.jms.Session.createConsumer(Ljavax/jms/Destination;)Ljavax/jms/MessageConsumer;