Add push contracts, provider delivery and channel diagnostics. Link email channels to services and document migration and validation. Ref: IT-1074
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.