Message Delivery & Pickup
===
---
## Internet Problems
- Unreliable Message Transfer
- No public endpoint to Agent
---
## Delivery Retry
- Requires Delivery Queue
```sequence
participant Alice
participant Bob
Note over Alice: Alice Generates Message For Bob
Alice -->> Bob: Failed Delivery attempt
Note over Alice: Alice Stores message in delivery queue
Alice -> Bob: Retried Delivery Succeeds
```
---
Message Pickup
---
Delivery becomes impossible:
- previous endpoint not coming back online
- no endpoint to start with
```sequence
participant Alice
participant Bob
Note over Alice: Alice Generates Message For Bob
Note over Alice: Lacking endpoint, Alice stores messsage \nin delivery queue.
Bob -> Alice: M(w/return_route)
Alice --> Bob: Queued Messages Sent\nOver inbound connection
```
---
How to Pickup Messages
---
Implicit:
- use return-route decorator to indicate desired transmission over inbound connection.
- Use thread option if not desiring delivery of unrelated messages
Explicit:
- Use designated protocol to retrieve messages
---
Pickup Implications
---
- Requres Queue (Also required for delivery retry)
- Queue Policy
- How long will items be queued before deletion?
- How many Delivery Retry Attempts?
---
Protocols
---
- Queue Status
- How many messages waiting
- Queue Policy
- Current Policy
- Request to Update Policy
---
## Current Writeup
By Andrew Whitehead
https://hackmd.io/@8VtAqKThQ6mKa9T7JgzIaw/SJw9Ead2N?type=view
---
---
> Sequence Diagram Syntax: http://bramp.github.io/js-sequence-diagrams/
{"metaMigratedAt":"2023-06-14T23:32:40.969Z","metaMigratedFrom":"Content","title":"Message Delivery & Pickup","breaks":"true","contributors":"[{\"id\":\"682ec8d2-aa5f-4758-ada7-bb28f8f53c5e\",\"add\":3145,\"del\":1570}]"}