Files
hrynco-notification-service/docs/supported-message-types.md
T
agrynco 1631786ce2 feat(push): add service-owned firebase channels and delivery
Add push contracts, provider delivery and channel diagnostics. Link email channels to services and document migration and validation.

Ref: IT-1074
2026-10-24 12:31:35 +03:00

1.5 KiB

Supported incoming message types

The Worker uses SupportedMessageType for its two incoming commands:

AMQP MessageType (unchanged) Public enum Consumer queue
Notification.SendEmail.v1 SendEmailV1 notification.send-email
Notification.SendPush.v1 SendPushV1 notification.send-push

SupportedMessageTypeParser maps the transport string at the validation boundary. Matching is exact and case-sensitive. Unknown versions, missing values, whitespace variants, enum names and numeric strings return no enum value and are rejected. Each consumer's delivery validator accepts only its own enum member; a supported command sent to the other consumer is also rejected before delivery.

The public enum lives in HrynCo.NotificationService.Contracts/Messages/SupportedMessageType.cs, in namespace HrynCo.NotificationService.Contracts.Messages, and is included in the existing HrynCo.NotificationService.Contracts package. The Worker parser remains internal and all consumers, validators and tests reference this single Contracts enum. It does not change RabbitMQ headers, serialized payloads, queues, producers or the shared RabbitMQ library. Result messages are not incoming delivery commands and are outside this enum's scope. Existing payload and correlation validation remains unchanged.

The Push Channels change removes the draft Firebase project/access-token fields from SendPushMessageData. The enum and AMQP header stay unchanged; see push channels for producer compatibility and rollout order.