• 6.7. 话题(订阅分发)
    • 6.7.1. 模糊话题

    6.7. 话题(订阅分发)

    Redisson的分布式话题RTopic)、反射式(Reactive)和RxJava2标准的接口。

    1. RTopic topic = redisson.getTopic("anyTopic");
    2. topic.addListener(SomeObject.class, new MessageListener<SomeObject>() {
    3. @Override
    4. public void onMessage(String channel, SomeObject message) {
    5. //...
    6. }
    7. });
    8. // 在其他线程或JVM节点
    9. RTopic topic = redisson.getTopic("anyTopic");
    10. long clientsReceivedMessage = topic.publish(new SomeObject());

    在Redis节点故障转移(主从切换)或断线重连以后,所有的话题监听器将自动完成话题的重新订阅。

    6.7.1. 模糊话题

    Redisson的模糊话题RPatternTopic对象可以通过正式表达式来订阅多个话题。除了同步接口外,还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。

    1. // 订阅所有满足`topic1.*`表达式的话题
    2. RPatternTopic topic1 = redisson.getPatternTopic("topic1.*");
    3. int listenerId = topic1.addListener(Message.class, new PatternMessageListener<Message>() {
    4. @Override
    5. public void onMessage(String pattern, String channel, Message msg) {
    6. Assert.fail();
    7. }
    8. });

    在Redis节点故障转移(主从切换)或断线重连以后,所有的模糊话题监听器将自动完成话题的重新订阅。