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

OSCHINA-MIRROR/yangyale-quick-queue-redis

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

Очередь сообщений

Очередь сообщений на основе Redis

Зависимости

<dependency>
    <groupId>com.ipet</groupId>
    <artifactId>quick-queue-redis</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Среда

Использование конфигурации spring redis
spring.redis.password=wIvJt@_redis
spring.redis.database=1
spring.redis.sentinel.master=sharddev6389
spring.redis.sentinel.nodes=192.168.11.29:26002,192.168.11.32:26002,192.168.11.20:26002
#redis IO 10 ms timeout
spring.redis.timeout=1000
spring.redis.pool.max-active=-1

Вызов

Производитель
//Через RedisQueueScanner внедрить интерфейс очереди сообщений
@RedisQueueScanner("com.ipet.test.queue")
@Configuration
@SpringBootApplication
public class ServiceExecutor {

    public static void main(String[] args) throws InterruptedException {
        new SpringApplication(ServiceExecutor.class).run(args);
        new CountDownLatch(1).await();
    }
}

//Через интерфейс RedisQueue определить интерфейс производителя очереди сообщений
//Через интерфейс RedisQueueProvider определить имя очереди производителя
@RedisQueue
public interface TestQueue {

    @RedisQueueProvider("queue1")
    void sendMessage1(String msg);

    @RedisQueueProvider("queue2")
    void sendMessage2(List<String> msgList);
}

//Отправка сообщения
@Component
@EnableScheduling
public class QueueTask {
    @Autowired
    private TestQueue testQueue;

    @Autowired
    private TestQueue1 testQueue1;

    @Scheduled(cron = "0/5 * * * * ?")
    public void queue1Task() {
        //Определить интерфейс очереди сообщений, можно напрямую вызывать, не нужно заботиться о реализации, реализация выполняется прокси
        testQueue.sendMessage1("Msg:[" + (int)(Math.random() * Integer.MAX_VALUE) + "]");
    }

    @Scheduled(cron = "0/10 * * * * ?")
    public void queue2Task() {
        testQueue.sendMessage2(Arrays.asList("Hello ", "World."));
    }

    @Scheduled(cron = "0/5 * * * * ?")
    public void queue3Task() {
        testQueue1.sendMessage1("Msg:[" + (int)(Math.random() * Integer.MAX_VALUE) + "]");
    }

    @Scheduled(cron = "0/10 * * * * ?")
    public void queue4Task() {
        testQueue1.sendMessage2(Arrays.asList("Hello ", "World."));
    }
}
Потребитель
//Наследовать AbstractRedisQueueConsumer и через аннотацию RedisQueueConsumer пометить имя очереди
@RedisQueueConsumer("queue1")
public class Message1Consumer extends AbstractRedisQueueConsumer<String> {
    private Logger logger = LoggerFactory.getLogger(getClass());
    @Override
    public void doConsume(String message) {
        logger.info("Message1 : [{}]",message);
    }
}

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

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

Введение

Очередь сообщений, реализованная через очередь Redis. Развернуть Свернуть
GPL-3.0
Отмена

Обновления

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

Участники

все

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

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