我應該將 Broker 部署在我的 JVM 還是應用伺服器中?
常見問題 > 使用 Apache ActiveMQ Classic > 我應該將 Broker 部署在我的 JVM 還是應用伺服器中?
您可以將 ActiveMQ Classic Broker 部署在您的 JVM 或應用程式伺服器中。是否這樣做取決於您的 JVM 數量以及您的備份與復原策略,各有優缺點。
嵌入 Broker 的優點
- 嵌入 Broker 意味著您可以使用 VM 傳輸,這樣可以避免使用 Socket 和序列化。ActiveMQ Classic 可以改用傳遞值的方式來傳遞訊息。
- 唯一的例外是 ObjectMessage;JMS 規範說明,您每次發送 ObjectMessage 時都必須序列化其主體。但是,如果您想在使用 VM 傳輸時獲得真正的高效能,您可以停用此功能。
- 它只有一個單一部署單元/JVM,而不是兩個耦合的進程。
嵌入 Broker 的缺點
如果您有很多 JVM(例如數百個),並且有非常嚴格的要求;您不希望丟失任何訊息,因此您需要非常小心地備份和管理持久的 ActiveMQ Classic 資料庫(和/或檔案)。
在每個 JVM 中都嵌入一個 Broker 可能會導致需要管理大量檔案集。因此,將兩者分開可能會更簡單,這樣您的數百個 JVM 可以與相對較小的 Broker 叢集(例如 2-10 個)通訊,以便您可以避免擔心每個 JVM 中的持久狀態,而只需專注於備份和管理 Broker 使用的檔案/資料庫。
此外,當 ActiveMQ Classic Broker 分開運行和管理時,通常更容易;當嘗試將 ActiveMQ Classic 嵌入應用程式伺服器時,可能會遇到一些 ClassLoader 問題。例如,您有時可能會遇到 ClassPath 錯誤。