Interface RReliableTopicReactive

All Superinterfaces:
RExpirableReactive, RObjectReactive

public interface RReliableTopicReactive extends RExpirableReactive
Reactive interface for Reliable topic based on Redis Stream object.

Dedicated Redis connection is allocated per instance (subscriber) of this object. Messages are delivered to all listeners attached to the same Redis setup.

Requires Redis 5.0.0 and higher.

Author:
Nikita Koksharov
  • Method Details

    • size

      reactor.core.publisher.Mono<Long> size()
      Amount of messages stored in Redis Stream object.
      Returns:
      amount of messages
    • publish

      reactor.core.publisher.Mono<Long> publish(Object message)
      Publish the message to all subscribers of this topic asynchronously. Each subscriber may have multiple listeners.
      Parameters:
      message - to send
      Returns:
      number of subscribers that received the message
    • addListener

      <M> reactor.core.publisher.Mono<String> addListener(Class<M> type, MessageListener<M> listener)
      Subscribes to this topic. MessageListener.onMessage method is called when any message is published on this topic.

      Though messages broadcasted across all topic instances, listener is attached to this topic instance.

      Watchdog is started when listener was registered.

      Type Parameters:
      M - - type of message
      Parameters:
      type - - type of message
      listener - for messages
      Returns:
      id of listener attached to this topic instance
      See Also:
    • removeListener

      reactor.core.publisher.Mono<Void> removeListener(String... listenerIds)
      Removes the listener by id attached to this topic instance
      Parameters:
      listenerIds - - listener ids
      Returns:
      void
    • removeAllListeners

      reactor.core.publisher.Mono<Void> removeAllListeners()
      Removes all listeners attached to this topic instance
    • countSubscribers

      reactor.core.publisher.Mono<Integer> countSubscribers()
      Returns amount of subscribers to this topic across all Redisson instances. Each subscriber may have multiple listeners.
      Returns:
      amount of subscribers
    • getMessages

      <M> reactor.core.publisher.Flux<M> getMessages(Class<M> type)
      Returns continues stream of published messages.
      Type Parameters:
      M - type of message
      Parameters:
      type - - type of message to listen
      Returns:
      stream of messages