notification

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 1, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrServiceNotRunning 서비스가 정상적인 실행 상태(Running)가 아닐 때(종료 절차 진행 중 또는 미시작) 반환하는 에러입니다.
	ErrServiceNotRunning = apperrors.New(apperrors.Unavailable, "서비스가 실행 상태가 아닙니다: 시스템이 종료 중이거나 아직 시작되지 않았습니다")

	// ErrNotifierNotFound 해당 알림 채널(Notifier)을 찾을 수 없거나, 설정 파일에 등록되지 않은 채널 ID가 요청되었을 때 반환하는 에러입니다.
	ErrNotifierNotFound = apperrors.New(apperrors.NotFound, "등록되지 않은 Notifier입니다. 설정 파일을 확인해 주세요")

	// ErrNotifierUnavailable 해당 알림 채널(Notifier)이 일시적으로 중단되었거나 종료(Closed)되어 알림을 전송할 수 없을 때 반환하는 에러입니다.
	// Notification 서비스는 정상 실행 중이나, 특정 채널만 사용 불가능한 상태(Partial Failure)를 의미합니다.
	ErrNotifierUnavailable = apperrors.New(apperrors.Unavailable, "해당 Notifier가 사용 불가능한 상태입니다 (일시적 중단 또는 종료됨)")

	// ErrExecutorNotInitialized 서비스 시작 시 핵심 의존성 객체인 Task Executor가 올바르게 초기화되지 않았을 때 반환하는 에러입니다.
	ErrExecutorNotInitialized = apperrors.New(apperrors.Internal, "Executor 객체가 초기화되지 않았습니다")
)

Functions

func NewErrDefaultNotifierNotFound

func NewErrDefaultNotifierNotFound(id string) error

NewErrDefaultNotifierNotFound 설정 파일에 정의된 기본(Default) Notifier ID를 찾을 수 없을 때 반환하는 에러를 생성합니다.

func NewErrDuplicateNotifierID

func NewErrDuplicateNotifierID(id string) error

NewErrDuplicateNotifierID 설정 로딩 시 동일한 Notifier ID가 중복으로 감지되었을 때 반환하는 에러를 생성합니다.

func NewErrNotifierInitFailed

func NewErrNotifierInitFailed(err error) error

NewErrNotifierInitFailed Notifier 인스턴스 생성 및 초기화 과정에서 예기치 않은 오류가 발생했을 때 반환하는 에러를 생성합니다.

Types

type Service

type Service struct {
	// contains filtered or unexported fields
}

Service 알림 발송 요청을 처리하고 Notifier들의 생명주기를 관리하는 구조체입니다.

func NewService

func NewService(appConfig *config.AppConfig, creator notifier.Creator, executor contract.TaskExecutor) *Service

NewService Notification 서비스를 생성합니다.

func (*Service) Health

func (s *Service) Health() error

Health 시스템이 정상적으로 동작 중인지 검사합니다.

func (*Service) Notify

func (s *Service) Notify(ctx context.Context, notification contract.Notification) error

Notify 알림 메시지 발송을 요청합니다.

이 메서드는 일반적으로 비동기적으로 동작할 수 있으며(구현체에 따라 다름), 전송 요청이 성공적으로 큐에 적재되거나 시스템에 수락되었을 때 nil을 반환합니다. 즉, nil 반환이 반드시 "최종 사용자 도달"을 보장하는 것은 아닙니다.

매개변수:

  • ctx: 요청의 컨텍스트 (Timeout, Cancellation 전파 용도)
  • notification: 전송할 알림의 상세 내용 (메시지, 수신처, 메타데이터 등)

반환값:

  • error: 요청 검증 실패, 큐 포화 상태, 또는 일시적 시스템 장애 시 에러를 반환합니다.

func (*Service) Start

func (s *Service) Start(serviceStopCtx context.Context, serviceStopWG *sync.WaitGroup) error

Start Notification 서비스를 시작하고 모든 Notifier를 초기화합니다.

이 메서드는 서비스의 전체 생명주기를 관리하는 핵심 진입점입니다.

각 Notifier는 독립적인 고루틴에서 실행되며, 하나의 Notifier에서 패닉이 발생하더라도 다른 Notifier의 동작에는 영향을 주지 않습니다. 서비스 종료 시에는 모든 Notifier가 안전하게 정리될 때까지 대기합니다.

매개변수:

  • serviceStopCtx: 서비스 종료 신호를 전달받는 컨텍스트입니다. 이 컨텍스트가 취소되면 모든 Notifier의 정리 프로세스가 시작됩니다.
  • serviceStopWG: 서비스 종료 시 모든 고루틴(Notifier 및 종료 처리 고루틴)이 완전히 종료될 때까지 대기하기 위한 WaitGroup입니다. 호출자는 이 WaitGroup을 통해 안전한 종료를 보장할 수 있습니다.

반환값:

  • error: 초기화 실패, 중복 실행, 또는 설정 오류 시 에러를 반환합니다.

func (*Service) SupportsHTML

func (s *Service) SupportsHTML(notifierID contract.NotifierID) bool

SupportsHTML 지정된 Notifier가 HTML 형식의 메시지 본문을 지원하는지의 여부를 반환합니다.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL