ActiveMQ翻译: broker内嵌虚拟机和外部容器运行broker之间的选择

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;

相关文章
相关标签/搜索