【hazelcast入门系列之六】hazelcast的Reliable Topic使用

本文介绍hazelcast中Reliable Topic的使用。

Reliable Topic的基础使用

首先放上示例代码
示例代码
代码整体结构与Topic类似,但是通过配置可以发现Reliable Topic是依赖于Ringbuffer存储的。
这样可以获取以下优势:

  1. 由于Ringbuffer默认有一个异步备份,所以事件不会丢失。
  2. 由于每个ITopic有自己的Ringbuffer,所以在生产者快,消费者慢的情况下也没问题。
  3. 由于普通的ITopic背后的事件系统是基于其他数据结构的,例如集合的监听器,可能会遇到隔离问题。在Reliable Topic上就完全没有这个问题了。

    慢消费者的处理

    Reliable Topic 提供了一种处理慢消费者的方式。为慢消费者保留所有事件是不明智的,因为你不知道慢消费者什么时候能够赶上。通过控制Ringbuffer的size,可以只保留有限的数据,并且可以通过配置参数TopicOverloadPolicy采取一定的抛弃策略。

    DISCARD_OLDEST 在设置了Ringbuffer的TTL后,覆盖最老的记录。在这种策略下,快的生产者将替掉慢的消费者。(由于消费者保留的id已经不存在于Ringbuffer里面了)
    DISCARD_NEWEST 抛弃最新的数据。
    BLOCK 如果Ringbuffer已满,等待旧数据过期。
    ERROR 直接抛出TopicOverloadException异常。

Reliable Topic的配置项

配置项 含义 备注
statistics-enabled 启用统计 默认true
message-listener 定义消息监听者
read-batch-size 批读取数量 默认为10
topic-overload-policy 主题过载处理策略 DISCARD_OLDEST, DISCARD_NEWEST, BLOCK 和 ERROR ,默认值BLOCK

通过以上内容,希望读者能够对Reliable Topic的使用有一定的了解。

本文标题:【hazelcast入门系列之六】hazelcast的Reliable Topic使用

文章作者:roytrack

发布时间:2019年02月18日 - 21:02

原始链接:http://www.roytrack.com/2019/02/id10/

许可协议: 转载请保留原文链接及作者。