Skip to content

ghdcksgml1/pytot-server

Repository files navigation

Publish Your Topic on Time!

pytot(Publish Your Topic on Time) 은 당신이 발생한 토픽을 원하는 시간에 맞춰 발행할 수 있게해주는 효과적인 도구입니다.

이 도구를 이용해 아래와 같은 작업을 효과적으로 수행할 수 있습니다:

  • 특정 시간에 맞춰 블로그 포스트, 뉴스레터, 소셜 미디어 게시물 등을 예약 발행
  • 정기적인 업데이트나 공지사항을 자동으로 발행
  • 시간에 민감한 콘텐츠를 적시에 공유
  • 마케팅 캠페인이나 이벤트 홍보를 위한 콘텐츠 예약

당신이 특정 토픽에 대해 미리 주기를 설정하지 않은 경우에는 기본적으로 즉시 토픽이 발행됩니다.

주기는 초, 분, 시간, 일, 주, 월 단위로 설정할 수 있고, 스프링 표기법을 지원합니다.
예를 들어, 매주 월요일 오전 9시에 발행하고 싶다면 0 9 * * 1로 설정할 수 있습니다.

주기적으로 토픽을 발행하는 방법도 있지만, 특정 시간에 맞춰 발행하는 것이 더 중요할 때가 많습니다.
예를 들어, 사용자별로 메시지를 예약 발행하거나, 특정 이벤트에 맞춰 콘텐츠를 발행하는 경우가 그렇습니다.
이러한 경우, pytot은 매우 유용한 도구가 될 수 있습니다.

Kafka의 헤더에 pytot-schedule-time 키를 사용하여 원하는 발행 시간을 지정할 수 있습니다.
이 헤더는 ISO 8601 형식을 지원하여 2023-12-25T10:00:00Z와 같이 ISO 8601 형식으로 시간을 지정할 수 있습니다.

당신은 이제 이벤트 발행과 이벤트 소비에만 집중하세요!

토픽은 저희가 제때 발행할게요 :)

🏗️ 아키텍처

┌─────────────┐
│  Producer   │
│  (Your App) │
└──────┬──────┘
       │ Send message with pytot headers
       ▼
┌─────────────────────────────────┐
│   PYTOT Service                 │
│  ┌──────────────────────────┐   │
│  │  Kafka Consumer          │   │
│  └────────┬─────────────────┘   │
│           │                     │
│           ▼                     │
│  ┌──────────────────────────┐   │
│  │  Schedule Manager        │   │
│  │  - Parse headers         │   │
│  │  - Store in MongoDB      │   │
│  └────────┬─────────────────┘   │
│           │                     │
│           ▼                     │
│  ┌──────────────────────────┐   │
│  │  Scheduler               │   │
│  │  - Check due messages    │   │
│  │  - Publish on time       │   │
│  └────────┬─────────────────┘   │
└───────────┼─────────────────────┘
            │
            ▼
    ┌──────────────┐
    │ Kafka Topic  │
    │ (Your Topic) │
    └──────┬───────┘
           │
           ▼
    ┌──────────────┐
    │   Consumer   │
    │  (Your App)  │
    └──────────────┘

About

Publish Your Topic on Time!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages