我应该将代理部署在我的 JVM 或 AppServer 中吗?
常见问题解答 > 使用 Apache ActiveMQ Classic > 我应该将代理部署在我的 JVM 或 AppServer 中吗?
您可以将 ActiveMQ Classic Broker 部署在您的 JVM 或应用程序服务器中。无论您这样做与否,都有利弊,具体取决于您拥有的 JVM 数量以及您的备份和恢复策略。
嵌入代理的优点
- 嵌入代理意味着您可以使用 VM 传输,从而避免使用套接字和序列化。相反,ActiveMQ Classic 可以按值传递消息。
- 对此的轻微例外是 ObjectMessage;JMS 规范规定您在发送 ObjectMessage 时必须对其主体进行序列化。但是,如果您希望在使用 VM 传输时获得真正的高性能,您可以禁用此功能
- 它只有一个部署单元/JVM,而不是两个耦合进程。
嵌入代理的缺点
如果您有很多 JVM(例如 100 个),并且有非常严格的要求;您永远不想丢失任何消息,因此您需要非常小心地备份和管理持久性 ActiveMQ Classic 数据库(和/或文件)。
在每个 JVM 中嵌入代理可能会导致大量文件集需要管理。因此,将两者分开可能更简单,这样您的 100 个 JVM 就可以与一个相对较小的代理集群(例如 2-10 个)通信,这样您就可以避免担心每个 JVM 中的持久状态,只需专注于备份和管理代理使用的文件/数据库。
此外,当 ActiveMQ Classic 代理分开运行和管理时,通常更容易;当尝试将 ActiveMQ Classic 嵌入应用程序服务器时,可能会遇到一些 ClassLoader 问题。例如,有时您可能会收到类路径错误