PDM Poller
2025-10-24 | ๐ 0 words | โฑ 0 mins | ๐งพ History | โ Tom D'Roza | ๐ Ross Buggins
๐ง This page has less that 200 words. So it looks like this page is still under construction.
Known Issues / Todo
- โ This page is draft and is subject to rapid change, and may not be fully accurate or complete
Events Consumed
- PDMResourceSubmitted - pdm-resource-submitted - uk.nhs.notify.digital.letters.pdm.resource.submitted.v1
- PDMResourceUnavailable - pdm-resource-unavailable - uk.nhs.notify.digital.letters.pdm.resource.unavailable.v1
Events Produced
- PDMResourceAvailable - pdm-resource-available - uk.nhs.notify.digital.letters.pdm.resource.available.v1
- PDMResourceUnavailable - pdm-resource-unavailable - uk.nhs.notify.digital.letters.pdm.resource.unavailable.v1
- PDMResourceRetriesExceeded - pdm-resource-retries-exceeded - uk.nhs.notify.digital.letters.pdm.resource.retries.exceeded.v1
Diagrams
c4code-pdm-poller
PDM Poller
C4:
Link to this diagram directly: /nhs-notify-digital-letters/diagrams/c4code-pdm-poller.html Questions
- What poll interval and duration is needed for the PDM Poller?
Decisions
- Use of an SQS Delay Queue to manage polling intervals
PDMResourceUnavailableevent to contain retry count- PollPDM lambda to determine when max retries exceeded and emit a
PDMResourceRetriesExceededevent
architecture-beta
service pdmResourceSubmitted(aws:res-amazon-eventbridge-event)[PDMResourceSubmitted Event]
service pdmResourceAvailable(aws:res-amazon-eventbridge-event)[PDMResourceUnavailable Event]
service pdmResourceUnavailable2(aws:res-amazon-eventbridge-event)[PDMResourceAvailable Event]
service pdmRetriesExceeded(aws:res-amazon-eventbridge-event)[PDMResourceRetriesExceeded Event]
service pdmResourceUnavailable(aws:res-amazon-eventbridge-event)[PDMResourceUnavailable Event]
group checkPdm(cloud)[PDMPoller]
service pollPdmQueue(logos:aws-sqs)[PollPDM SQS Delay Queue] in checkPdm
service pollPdmLambda(logos:aws-lambda)[PollPDM] in checkPdm
service pdm(server)[PDM]
junction j1
junction j2
junction j3
pdmResourceSubmitted:B -- T:j3
pdmResourceUnavailable:T -- B:j3
j3:R --> L:pollPdmQueue
pollPdmQueue:R --> L:pollPdmLambda
pollPdmLambda:R <--> L:pdm
pollPdmLambda:B -- T:j1
j1:R --> L:pdmResourceUnavailable2
j1:B -- T:j2
j2:R --> L:pdmResourceAvailable
j2:B --> L:pdmRetriesExceeded
sequence-pdm-poller
C4:
Link to this diagram directly: /nhs-notify-digital-letters/diagrams/sequence-pdm-poll.html
sequenceDiagram
participant eventBus as EventBridge
participant pdmPollerQueue as Queue<br/>PDMPollerQueue
participant pdmPoller as Lambda<br/>PDMPoller
participant pdm as PDM
eventBus -) pdmPollerQueue: PDMResourceSubmitted Event(pdmID)<br/>PDMResourceUnavailable Event(pdmID)
activate pdmPollerQueue
pdmPollerQueue ->> pdmPoller:
deactivate pdmPollerQueue
activate pdmPoller
loop Until resource contains payload
pdmPoller ->> pdm: GetSpecificResource(pdmID)
activate pdm
pdm -->> pdmPoller: DocumentReference
pdm ->> eventBus: PDMResourceUnavailable(pdmID) [if no payload]
deactivate pdm
end
alt Resource contains payload
pdmPoller -) eventBus: PDMResourceAvailable(pdmID)
else after retries exceeded
pdmPoller -) eventBus: PDMResourceRetriesExceeded(pdmID)
deactivate pdmPoller
end