All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.lontime.shaded.org.redisson.api.RReliableTopicRx Maven / Gradle / Ivy

The newest version!
/**
 * Copyright (c) 2013-2021 Nikita Koksharov
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.github.lontime.shaded.org.redisson.api;

import io.reactivex.rxjava3.core.Completable;
import io.reactivex.rxjava3.core.Flowable;
import io.reactivex.rxjava3.core.Single;
import com.github.lontime.shaded.org.redisson.api.listener.MessageListener;

/**
 *
 * RxJava2 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 * */ public interface RReliableTopicRx extends RExpirableRx { /** * Amount of messages stored in Redis Stream object. * * @return amount of messages */ Single size(); /** * Publish the message to all subscribers of this topic asynchronously. * Each subscriber may have multiple listeners. * * @param message to send * @return number of subscribers that received the message */ Single publish(Object message); /** * 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. * * @see com.github.lontime.shaded.org.redisson.config.Config#setReliableTopicWatchdogTimeout(long) * * @param - type of message * @param type - type of message * @param listener for messages * @return id of listener attached to this topic instance * @see MessageListener */ Single addListener(Class type, MessageListener listener); /** * Removes the listener by id attached to this topic instance * * @param listenerIds - listener ids * @return void */ Completable removeListener(String... listenerIds); /** * Removes all listeners attached to this topic instance */ Completable removeAllListeners(); /** * Returns amount of subscribers to this topic across all Redisson instances. * Each subscriber may have multiple listeners. * * @return amount of subscribers */ Single countSubscribers(); /** * Returns continues stream of published messages. * * @param - type of message * @param type - type of message to listen * @return stream of messages */ Flowable getMessages(Class type); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy