ActiveMQ中适配器模式:ActiveMQ可以被部署在多个容器中,需要相应的适配器

在ActiveMQ中使用适配器模式来支持部署在多个容器中的Broker:

  • ActiveMQ可以部署在tomcat、Jetty、WebLogic等web容器中。
  • 也可以部署在调度容器如quartz中。
  • 不同的容器有不同的生命周期和事件管理机制。
  • ActiveMQ需要适配相应的容器特性。

ActiveMQ通过实现Servlet和Listener等适配器,支持部署在不同容器中:

Servlet适配器

实现BrokerServlet:

public class BrokerServlet extends HttpServlet {

  private BrokerService brokerService;

  public void init(ServletConfig config) {

   brokerService = new BrokerService();
    // 配置和开始broker服务 
   brokerService.start();
  }

  public void destroy() {
    brokerService.stop();  
  }
}

通过实现Servlet的生命周期方法,适配web容器。

Listener适配器

实现ContextListener:

public class BrokerLifecycleListener implements ContextListener {

  public void contextInitialized(ContextEvent event) {  

    BrokerService brokerService = ..  
    brokerService.start();
  }

  public void contextDestroyed(ContextEvent event) {    
    ..
    brokerService.stop(); 
  }    
}  

通过监听context事件,启动和停止broker服务。

作用

通过实现不同的适配器,ActiveMQ可以:

  • 启动和停止 broker服务
  • 监听和响应容器生命周期事件
  • 灵活部署在各种容器中

符合适配器模式原理:

  • 通过定义适配器接口
  • 提供不同的具体适配器
  • 来适配不同目标