本文介绍hazelcast中Topic的使用。
Topic的基础使用
首先放上基础代码
示例代码
代码主要包含三部分:
通过运行main方法可以获得以下输出:
在publish的时候发现可以同时打印publish、receive的统计信息,是通过以下配置项进行配置的。
1 | //设置进行信息统计 |
理解Topic
对于Topic来说,在hazelcast集群中,每个节点都会保存一份完整的订阅者的列表。
通过不同节点进行publish,默认是不保证有序的。如果打开配置项globalOrderEnabled,那么会通过计算topic的ID对应的分区,先把消息发送到包含该分区的节点上,然后再由该节点进行分发,从而保证了topic消息的有序性。
Topic底层是由分布式事件(Distributed Events)实现的,通过StripedExecutor来进行分发消息,根据事件源来交由固定的线程处理,从而保证了生成和发布消息的顺序一致性。
Topic的配置项
配置项 | 含义 | 备注 |
---|---|---|
global-ordering-enabled | 全局有序 | 默认为false |
statistics-enabled | 启用统计 | 默认true |
Topic的表现也依赖于event.queue的配置,这个在后面分布式事件再详细介绍。 |