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

com.github.lontime.shaded.org.redisson.api.RReliableTopic 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 com.github.lontime.shaded.org.redisson.api.listener.MessageListener;

/**
 *
 * 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 RReliableTopic extends RExpirable, RReliableTopicAsync { /** * Amount of messages stored in Redis Stream object. * * @return amount of messages */ long 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 */ long 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 */ String addListener(Class type, MessageListener listener); /** * Removes the listener by id attached to this topic instance * * @param listenerIds - listener ids */ void removeListener(String... listenerIds); /** * Removes all listeners attached to this topic instance */ void removeAllListeners(); /** * Returns amount of registered listeners to this topic instance * * @return amount of listeners */ int countListeners(); /** * Returns amount of subscribers to this topic across all Redisson instances. * Each subscriber may have multiple listeners. * * @return amount of subscribers */ int countSubscribers(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy