Планирование задач с Redis - PullRequest
0 голосов
/ 02 марта 2019

Мне нужно создать программу, которая получает идентификатор платежа и через 30 секунд отправляет запрос в другой веб-сервис, чтобы проверить, успешен ли платеж.Программа будет получать 500-1000 транзакций в минуту, поэтому я думаю, что неэффективно использовать Java Thread Pool для этой задачи.

Я думаю использовать Redis для хранения идентификаторов платежей, которые необходимо проверить.И идентификаторы должны вызываться один за другим в соответствии с выданным временем (каждый идентификатор должен вызываться через 30 секунд).

Насколько я знаю, я могу использовать тип данных ключ-значение SET:

SET ID TIMESTAMP

Это правильный способ реализации программы?Какие еще варианты вы рекомендуете?

Я использую Spring Boot и PostgreSql для базы данных.

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Вы можете использовать redis zset (Sorted Set), который сохраняет элементы в базах заказов по заданному баллу, для более подробной информации вы можете проверить, как работает отсортированный набор.

Пример:

zadd SET_NAME PAYMENT_ID ISSUED_TIME(EPOCH)

Затем через каждые 10 секунд запускайте планировщик, который будет получать идентификаторы платежей из отсортированных наборов на основе оценок, например:

zrangebyscore SET_NAME LONG.MIN_VALUE CURRENT_TIME

Надеюсь, это поможет в вашем случае

0 голосов
/ 02 марта 2019

Вариант использования, по-видимому, является отложенной обработкой сообщений. Здесь может использоваться обработка сообщений Active MQ / или RabbitMQ, которая поддерживает отложенную обработку сообщений. RabbitMQ . Если оно не масштабируется для вашего варианта использования, вы можете сохранить свое сообщение в некоторой базе данных NOSQL (Cassandra) осколочным способом с фиксированным размером сегмента, скажем, событие запланировано на 10:21:55,затем интервал времени 10:21:00). И главный процесс выбирает подходящий интервал и распределяется между рабочими для обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...