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;

相關文章
相關標籤/搜索