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

OSCHINA-MIRROR/the-best-riven-smart-redisson-spring-boot-starter

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

Введение

Простая реализация Redisson Spring Boot Starter, основанная на Spring Messaging, для упаковки очереди и отложенной очереди Redisson. Предоставлен шаблон операций для отправки сообщений в очередь и потребитель, реализованный с помощью аннотаций.

Предыстория

В повседневной разработке часто встречаются сценарии, требующие очень точного времени задержки. Обычные решения не имеют функции отложенных сообщений или обеспечивают неточное время задержки. Например, RabbitMQ может имитировать отложенные сообщения с помощью очереди недоставленных сообщений, но эта очередь является блокирующей. RocketMQ предоставляет возможность отправлять отложенные сообщения, и сообщения не блокируются, но тестирование показало, что задержка не всегда точна, иногда погрешность составляет секунды.

Исследование показало, что Redisson реализовал отложенные очереди на основе Redis, обеспечивая точность задержки на миллисекундном уровне. На основе этого сценария соответствующие компоненты Spring были использованы для упаковки, чтобы упростить использование в приложениях Spring.

Среда выполнения и базовая архитектура

Java 1.8 Spring 5.0.10 Spring Boot 2.0.6

Инструкция по установке

1. Начиная с версии 1.1.4-beta.1, она была опубликована в центральном репозитории Maven, можно напрямую ссылаться на неё.
<dependency>
   <groupId>io.gitee.the-best-riven</groupId>
   <artifactId>smart-redisson-spring-boot-starter</artifactId>
   <version>1.1.4-beta.1</version>
</dependency>
2. Версии до 1.1.4-beta.1 не были опубликованы в центральном репозитории Maven, необходимо вручную ввести соответствующие зависимости.
<dependency>
    <groupId>com.riven</groupId>
    <artifactId>smart-redisson-spring-boot-starter</artifactId>
    <version>1.0.0.RELEASE</version>
    <scope>system</scope>
    <systemPath>***</systemPath>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>2.0.6.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    <version>2.0.6.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <version>2.0.6.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-messaging</artifactId>
    <version>5.0.10.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.11.1</version>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.60</version>
</dependency>
3. Если у вас есть частный сервер, вы можете поместить jar-файл на частный сервер и просто сослаться на него обычным образом.
<dependency>
    <groupId>com.riven</groupId>
    <artifactId>smart-redisson-spring-boot-starter</artifactId>
    <version>1.1.3-beta.1</version>
</dependency>
4. Особое примечание

До версии 1.1.4-beta.1 groupId был com.riven, из-за требований проверки центрального репозитория Maven. После публикации версии 1.1.4-beta.1 в центральный репозиторий Maven groupId был изменён на io.gitee.the-best-riven.

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

1. После введения starter добавьте следующее в файл конфигурации.
spring:
  smart-redisson:
    #server-type: single
    #server-address: localhost:6379
    server-type: cluster
    server-address: localhost:7000,localhost:7001,localhost:7002
    password: 123456

По умолчанию Redis-сервис представляет собой один экземпляр (single), а адрес подключения — localhost:6379. После завершения настройки можно использовать RedissonClient через контейнер Spring.

2. Если вам нужно использовать очередь, просто введите экземпляр RedissonQueue в контейнер Spring, например:
@Bean
public RedissonQueue redissonQueue() {
    return new RedissonQueue("riven", true, null, messageConverter());
}

При создании очереди можно указать имя очереди, тип очереди (с задержкой или нет), стратегию изоляции и конвертер сообщений. Стратегия изоляции применяется в следующих сценариях: в кластерном режиме службы, если предположить, что есть три машины A, B и C, машина A хочет потреблять только сообщения, созданные машиной A. Это называется изоляцией, и её можно достичь, указав стратегию изоляции кластера. Исходный код предоставляет DefaultIsolationStrategy, который можно использовать при необходимости. Конвектор сообщений используется для преобразования сообщений и дополнительной обработки, такой как добавление заголовков сообщений.

3. Отправка сообщений в очередь
@Autowired
private RedissonTemplate redissonTemplate;

public void test() {
    CarLbsDto carLbsDto = new CarLbsDto();
    carLbsDto.setCid(1);
    carLbsDto.setBusinessType("0");
    carLbsDto.setCity("北京市");
    carLbsDto.setCityId(265);
    carLbsDto.setName("fsfds");
    carLbsDto.setCarNum("156156");
    redissonTemplate.sendWithDelay("riven", carLbsDto, 5000);
}
4. Потребление сообщений

Откройте @EnableRedisson в классе запуска Spring и создайте следующий класс:

@Configuration
public class RedissonTestApplication {
    @Bean("myMessageConverter")
    public MessageConverter messageConverter() {
        return new MessageConverter() {
            @Override
            public QueueMessage<?> toMessage(Object object, Map<String, Object> headers) throws MessageConversionException {
                //do something you want, eg:
                headers.put("my_header", "my_header_value");
                return QueueMessageBuilder.withPayload(object).headers(headers).build();
            }

            @Override
            public Object fromMessage(RedissonMessage redissonMessage) throws MessageConversionException {
                byte[] payload =

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

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

Введение

Реализация Redisson Springboot Starter и реализация очереди и отложенной очереди на основе spring-messaging для Redisson. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/the-best-riven-smart-redisson-spring-boot-starter.git
git@api.gitlife.ru:oschina-mirror/the-best-riven-smart-redisson-spring-boot-starter.git
oschina-mirror
the-best-riven-smart-redisson-spring-boot-starter
the-best-riven-smart-redisson-spring-boot-starter
master