<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
Данный проект представляет собой простой демонстрационный пример использования 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 )