-
Notifications
You must be signed in to change notification settings - Fork 691
Java sessionfactory
dennis zhuang edited this page May 30, 2013
·
5 revisions
本指南以1.4.5版本的java客户端为起点编写。
- 简单例子
- 消息
- 客户端配置
- 会话工厂MessageSessionFactory
- 发送消息MessageProducer
- 订阅消息MessageConsumer
- 遍历消息TopicBrowser
- Spring框架支持
- 高级主题
#介绍
创建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
来关闭全局的会话工厂。