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

com.github.lontime.extredisson.common.RedissonExtHelper Maven / Gradle / Ivy

The newest version!
package com.github.lontime.extredisson.common;

import java.time.Duration;
import java.util.StringJoiner;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;

import com.github.lontime.base.logging.GLogger;
import com.github.lontime.extredisson.RedissonInstance;
import com.github.lontime.extredisson.codec.StringBytesMapCodec;
import com.github.lontime.shaded.org.redisson.api.RStream;
import com.github.lontime.shaded.org.redisson.api.RedissonClient;

import static com.github.lontime.extredisson.common.Constants.SPLITTER;

/**
 * RedissonExtHelper.
 * @author lontime
 * @since 1.0
 */
public class RedissonExtHelper {

    public static RedissonClient client(String name) {
        return RedissonInstance.get().client(name);
    }

    public static RStream stringBytesStream(String name, String topic) {
        final RedissonClient client = client(name);
        return client.getStream(topic, StringBytesMapCodec.INSTANCE);
    }


    /**
     * join.
     * @param s1 string
     * @param s2 string
     * @return replyName
     */
    public static String join(String s1, String s2) {
        return new StringJoiner(SPLITTER).add(s1).add(s2).toString();
    }

    /**
     * join.
     * @param s1 string
     * @param s2 string
     * @param s3 string
     * @return replyName
     */
    public static String join(String s1, String s2, String s3) {
        return new StringJoiner(SPLITTER).add(s1).add(s2).add(s3).toString();
    }

    /**
     * join.
     * @param s1 string
     * @param s2 string
     * @param s3 string
     * @param s4 string
     * @return replyName
     */
    public static String join(String s1, String s2, String s3, String s4) {
        return new StringJoiner(SPLITTER).add(s1).add(s2).add(s3).add(s4).toString();
    }

    /**
     * join.
     * @param s1 string
     * @param s2 string
     * @param s3 string
     * @param s4 string
     * @param s5 string
     * @return replyName
     */
    public static String join(String s1, String s2, String s3, String s4, String s5) {
        return new StringJoiner(SPLITTER).add(s1).add(s2).add(s3).add(s4).add(s5).toString();
    }

    /**
     * join.
     * @param s1 string
     * @param s2 string
     * @param s3 string
     * @param s4 string
     * @param s5 string
     * @param s6 string
     * @return replyName
     */
    public static String join(String s1, String s2, String s3, String s4, String s5, String s6) {
        return new StringJoiner(SPLITTER).add(s1).add(s2).add(s3).add(s4).add(s5).add(s6).toString();
    }

    /**
     * join.
     * @param s1 string
     * @param s2 string
     * @param s3 string
     * @param s4 string
     * @param s5 string
     * @param s6 string
     * @param s7 string
     * @return replyName
     */
    public static String join(String s1, String s2, String s3, String s4, String s5, String s6, String s7) {
        return new StringJoiner(SPLITTER).add(s1).add(s2).add(s3).add(s4).add(s5).add(s6).add(s7).toString();
    }

    /**
     * join.
     * @param s1 string
     * @param s2 string
     * @param s3 string
     * @param s4 string
     * @param s5 string
     * @param s6 string
     * @param s7 string
     * @param s8 string
     * @return replyName
     */
    public static String join(String s1, String s2, String s3, String s4, String s5, String s6, String s7, String s8) {
        return new StringJoiner(SPLITTER).add(s1).add(s2).add(s3).add(s4).add(s5).add(s6).add(s7).add(s8).toString();
    }

    /**
     * join.
     *
     * @param future         future
     * @param totalTimeoutMs timeout
     * @param             T
     * @param size           size
     * @return result
     */
    public static  T block(CompletableFuture future, long totalTimeoutMs, int size) {
        final long start = System.currentTimeMillis();
        final long timeoutMs = size > 0 ? Math.max((totalTimeoutMs / size), 100) : totalTimeoutMs;
        GLogger.defaults().infov("join timeout:{0}毫秒, totalTimeout:{1}毫秒, size:{2}", timeoutMs, totalTimeoutMs, size);
        try {
            final T result =  future.get(timeoutMs, TimeUnit.MILLISECONDS);
            GLogger.defaults().infov("join is successful, {0} ms", (System.currentTimeMillis() - start));
            return result;
        } catch (Exception e) {
            GLogger.defaults().infov(e, "join is error, {0} ms!", (System.currentTimeMillis() - start));
            return null;
        }
    }

    /**
     * join.
     *
     * @param future       future
     * @param totalTimeout timeout
     * @param           T
     * @param size         size
     * @return result
     */
    public static  T block(CompletableFuture future, Duration totalTimeout, int size) {
        return block(future, totalTimeout.toMillis(), size);
    }

    /**
     * join.
     *
     * @param future       future
     * @param totalTimeout timeout
     * @param           T
     * @return result
     */
    public static  T block(CompletableFuture future, Duration totalTimeout) {
        return block(future, totalTimeout, 0);
    }

    /**
     * join.
     *
     * @param future         future
     * @param totalTimeoutMs timeout
     * @param             T
     * @return result
     */
    public static  T block(CompletableFuture future, long totalTimeoutMs) {
        return block(future, totalTimeoutMs, 0);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy