지난 글에서,
RabbitMQ에서는
플러그인으로 구현하거나,
별도의 큐를 생성하여 구현하는것을 알아보았다.
https://japing.tistory.com/entry/Redis로-간단지연-큐-구현이-될까-1-간단지연-큐란
Redis에서는
1.지연큐를 지원하는 기능 or 플러그인이 있는지
2.별도의 방법
지연큐를 지원하는 기능이 있는지
1.Redis + Java8(+Spring) 을 위한 Redis Delay Queue 라이브러리인 redis-dqueue
https://github.com/hellokaton/redis-dqueue
@GetMapping("/push")
public String push(String id) throws RDQException {
Message<String> message = new Message<>();
message.setTopic("order-cancel");
message.setPayload(id);
message.setDelayTime(10);
rdQueueTemplate.asyncPush(message, (s, throwable) -> {
// TODO async push result
});
return "推送成功";
}
2.Nest를 위한 @nest/bull
https://docs.nestjs.com/techniques/queues
Nest는 인기 있고 잘 지원되는 고성능 Node.js 기반 Queue 시스템 구현 인 Bull@nestjs/bull 위에 추상화/래퍼로 패키지를 제공합니다. 이 패키지를 사용하면 Bull Queues를 Nest 친화적인 방식으로 애플리케이션에 쉽게 통합할 수 있습니다.
Bull은 작업 데이터를 유지하기 위해 Redis 를 사용 하므로 시스템에 Redis가 설치되어 있어야 합니다. Redis 기반이기 때문에 Queue 아키텍처는 완전히 분산되고 플랫폼에 독립적일 수 있습니다.
- delay: number- 이 작업을 처리할 수 있을 때까지 기다리는 시간(밀리초)입니다. 정확한 지연을 위해 서버와 클라이언트 모두 시계를 동기화해야 합니다.
3.Laravel
https://laravel.kr/docs/5.8/queues
라라벨의 Queue-큐는 Beanstalk, Amazone SQS, Redis 그리고 관계형 데이터베이스과 같은 다양한 큐 시스템을 위한 통일된 API를 제공합니다. 큐를 사용하면 이메일을 보내는 일과 같이 시간이 소요되는 Job을 나중에 처리할 수 있습니다. 이렇게 소모되는 작업들을 나중에 처리함으로써 여러분의 애플리케이션은 웹 요청-request을 더 빠르게 처리할 수 있습니다.
지연시켜서 처리하기
대기열에 있는 job의 실행을 지연하려면, job 이 dispathcing 될 때 delay 메소드를 사용할 수 있습니다. 예를 들어, job이 10 분이 지난 뒤에 처리되도록 지정해보겠습니다:
<?php
namespace App\Http\Controllers;
use App\Jobs\ProcessPodcast;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class PodcastController extends Controller
{
/**
* Store a new podcast.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
// Create podcast...
ProcessPodcast::dispatch($podcast)
->delay(now()->addMinutes(10));
}
}
별도의 방법(구상 중)
1.RDB를 사용
1-1.Message -> 2.Producer(1분대기) -> 3.Redis Push -> 4.Consumer(바로 Pop)
1-2.Producer(1분대기) 디테일
Message -> RDB(TimeStamp로 기록) -> RDB를 TimeStamp정렬조회 후 1분 지난것들 선별 -> Redis에 Push
2.??
'재학습 > DB' 카테고리의 다른 글
Redis로 간단지연 큐 구현이 될까? (1) - 간단지연 큐란? (0) | 2022.09.26 |
---|---|
[Postgresql] Vacuum 이란? (0) | 2021.10.20 |