Skip to content

Java sessionfactory

Roy edited this page Nov 6, 2017 · 5 revisions

本指南以1.4.5版本的java客户端为起点编写。

介绍

创建producer或者consumer之前都必须先创建一个MessageSessionFactory实例,作为工厂才能具体的生产者和消费者。通常,除非你拥有多个MetaQ集群,否则在你的应用里一般也只会拥有一个单例的消息会话工厂。

创建工厂:

需要客户端配置实例才能创建工厂,关于客户端配置,请见上一小节

      final MetaClientConfig metaClientConfig = new MetaClientConfig();
      final ZKConfig zkConfig = new ZKConfig();
      zkConfig.zkConnect = "127.0.0.1:2181";
      metaClientConfig.setZkConfig(zkConfig);

      MessageSessionFactory sessionFactory = new MetaMessageSessionFactory(metaClientConfig);

这样就创建了一个消息会话工厂,有这个工厂实例就可以创建生产者和消费者。

获取Broker统计信息

MessageSessionFactory除了一些createXXXX的方法用于创建producer,consumer或者topic browser之外,还有一个方法getStats用于获取服务端的统计信息。getStats有几个重载方法,可以获取所有已链接broker或者特定broker的统计信息(请注意,必须是已经链接的broker的信息才能获取,因此要调用getStats方法,通常必须在创建producer,consumer之后)。

    Map<InetSocketAddress, StatsResult> stats = sessionFactory.getStats();

返回的map的key是broker服务器socket地址,而StatsResult就是具体的统计信息。

当然,通常来说你不会使用这个方法,直接telnet到服务器,执行stats命令是更便捷的获取统计信息的方法。

关闭

创建的消息会话工厂,必须明确地调用shutdown方法才能关闭,否则会有资源泄漏的隐患。如果你使用Spring框架,可以设置destroy-method来关闭;如果你是在Web容器比如tomcat里,你可以写一个ServletContextListener来关闭全局的会话工厂。