1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hlovez-redismq

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Реализация очереди сообщений на основе SpringBoot и Redis Stream

Добавление зависимости Redis

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
  • JDK — Version 1.8
  • Maven — Version 3.6.3
  • SpringBoot — Version 2.4.3

Использование

Данный проект представляет собой простой демонстрационный пример использования Redis Stream в качестве очереди сообщений. Пользователи могут модифицировать код в соответствии со своими потребностями.

Для запуска программы необходимо изменить конфигурацию в файле application.yml на свои значения.

Метод тестирования

После запуска программы можно протестировать её, обратившись к следующим интерфейсам:

http://localhost:8080/test/sendTest/mystream1
http://localhost:8080/test/sendTest/mystream2

В консоли будет выведено следующее:

2022-01-27 10:18:48.298  INFO 10552 --- [nio-8080-exec-5] v.huhailong.redismq.redistool.RedisUtil  : 添加成功:1643249866013-0
2022-01-27 10:18:48.302  INFO 10552 --- [cTaskExecutor-1] v.h.redismq.redistool.ListenerMessage    : 接受到来自redis的消息
message id 1643249866013-0
stream mystream1
body {test=hello redismq, send time=2022-01-27 10:18:48}
2022-01-27 10:18:54.080  INFO 10552 --- [nio-8080-exec-7] v.huhailong.redismq.redistool.RedisUtil  : 添加成功:1643249871795-0
2022-01-27 10:18:54.080  INFO 10552 --- [cTaskExecutor-2] v.h.redismq.redistool.ListenerMessage    : 接受到来自redis的消息
message id 1643249871795-0
stream mystream2
body {test=hello redismq, send time=2022-01-27 10:18:54}

Также можно проверить способность принимать сообщения от нескольких ключей:

curl -X GET http://localhost:8080/test/moreTest/10

Примечание: если количество данных, вставляемых в Redis, велико, рекомендуется вставлять данные в коллекцию и затем разделять их на партии для уменьшения операций ввода-вывода и ускорения работы.

Метод разделения списка

public class ListUtil {

    /**
     * 集合分割工具类
     * @param max 分割后集合最大数量
     * @param list 要分割多集合
     * @return 返回分割后多集合
     */
    public static List<List<String>> cutApart(int max, List<String> list){
        List<List<String>> resultList = new ArrayList<>();
        Stream.iterate(0, n->n+1).limit(countStep(list.size(), max)).forEach(i->{
            resultList.add(list.stream().skip(i*max).limit(max).collect(Collectors.toList()));
        });
        return resultList;
    }

    private static Integer countStep(int size, int max){
        return (size + max - 1) / max;
    }
}

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

На основе Redis Stream реализовать MQ-сообщения. Развернуть Свернуть
MulanPSL-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/hlovez-redismq.git
git@api.gitlife.ru:oschina-mirror/hlovez-redismq.git
oschina-mirror
hlovez-redismq
hlovez-redismq
master