update
This commit is contained in:
@@ -110,24 +110,37 @@ env = smartreceive(msg; fileserver_download_handler=_fetch_with_backoff, max_ret
|
|||||||
## Architecture Diagram
|
## Architecture Diagram
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
flowchart TD
|
flowchart TB
|
||||||
subgraph Client
|
subgraph Sender["Julia Application (Sender)"]
|
||||||
App[Julia Application]
|
SenderApp[App Code]
|
||||||
|
NATSBridge_Send[NATSBridge]
|
||||||
|
NATS_Client[<b>NATS.jl</b>]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph Server
|
subgraph Receiver["Julia Application (Receiver)"]
|
||||||
Julia[Julia Service]
|
ReceiverApp[App Code]
|
||||||
NATS[NATS Server]
|
NATSBridge_Recv[NATSBridge]
|
||||||
FileServer[HTTP File Server]
|
NATS_Client_Recv[<b>NATS.jl</b>]
|
||||||
end
|
end
|
||||||
|
|
||||||
App -->|NATS| NATS
|
subgraph Infrastructure["Infrastructure"]
|
||||||
NATS -->|NATS| Julia
|
NATS[<b>NATS Server</b><br/>Message Broker]
|
||||||
Julia -->|NATS| NATS
|
FileServer[<b>HTTP File Server</b><br/>Upload/Download]
|
||||||
Julia -->|HTTP POST| FileServer
|
end
|
||||||
|
|
||||||
style App fill:#e8f5e9
|
SenderApp --> NATSBridge_Send
|
||||||
style Julia fill:#e8f5e9
|
NATSBridge_Send --> NATS_Client
|
||||||
|
NATS_Client --> NATS
|
||||||
|
|
||||||
|
NATS --> NATS_Client_Recv
|
||||||
|
NATS_Client_Recv --> NATSBridge_Recv
|
||||||
|
NATSBridge_Recv --> ReceiverApp
|
||||||
|
|
||||||
|
NATSBridge_Send -.->|HTTP POST upload| FileServer
|
||||||
|
FileServer -.->|HTTP GET download| NATSBridge_Recv
|
||||||
|
|
||||||
|
style SenderApp fill:#e8f5e9
|
||||||
|
style ReceiverApp fill:#e8f5e9
|
||||||
style NATS fill:#fff3e0
|
style NATS fill:#fff3e0
|
||||||
style FileServer fill:#f3e5f5
|
style FileServer fill:#f3e5f5
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -117,29 +117,42 @@ env = smartreceive(msg; fileserver_download_handler=_fetch_with_backoff, max_ret
|
|||||||
|
|
||||||
The Julia implementation follows the Claim-Check pattern:
|
The Julia implementation follows the Claim-Check pattern:
|
||||||
|
|
||||||
```
|
```mermaid
|
||||||
┌─────────────────────────────────────────────────────────────────────────┐
|
flowchart TB
|
||||||
│ SmartSend Function │
|
subgraph Sender["Julia Application (Sender)"]
|
||||||
└─────────────────────────────────────────────────────────────────────────┘
|
App[App Code]
|
||||||
│
|
NATSBridge[NATSBridge]
|
||||||
▼
|
NATS_Client[<b>NATS.jl</b>]
|
||||||
┌─────────────────────────────────────────────────────────────────────────┐
|
end
|
||||||
│ Is payload size < 1MB? │
|
|
||||||
└─────────────────────────────────────────────────────────────────────────┘
|
subgraph Receiver["Julia Application (Receiver)"]
|
||||||
│
|
App_Recv[App Code]
|
||||||
┌─────────────────┴─────────────────┐
|
NATSBridge_Recv[NATSBridge]
|
||||||
▼ ▼
|
NATS_Client_Recv[<b>NATS.jl</b>]
|
||||||
┌─────────────────┐ ┌─────────────────┐
|
end
|
||||||
│ Direct Path │ │ Link Path │
|
|
||||||
│ (< 1MB) │ │ (> 1MB) │
|
subgraph Infrastructure["Infrastructure"]
|
||||||
│ │ │ │
|
NATS[<b>NATS Server</b><br/>Message Broker]
|
||||||
│ • Serialize to │ │ • Serialize to │
|
FileServer[<b>HTTP File Server</b><br/>Upload/Download]
|
||||||
│ Buffer │ │ Buffer │
|
end
|
||||||
│ • Base64 encode │ │ • Upload to │
|
|
||||||
│ • Publish to │ │ HTTP Server │
|
App --> NATSBridge
|
||||||
│ NATS │ │ • Publish to │
|
NATSBridge --> NATS_Client
|
||||||
│ │ │ NATS with URL │
|
NATS_Client --> NATS
|
||||||
└─────────────────┘ └─────────────────┘
|
|
||||||
|
NATS --> NATS_Client_Recv
|
||||||
|
NATS_Client_Recv --> NATSBridge_Recv
|
||||||
|
NATSBridge_Recv --> App_Recv
|
||||||
|
|
||||||
|
NATSBridge -.->|HTTP POST upload| FileServer
|
||||||
|
FileServer -.->|HTTP GET download| NATSBridge_Recv
|
||||||
|
|
||||||
|
style App fill:#e8f5e9
|
||||||
|
style App_Recv fill:#e8f5e9
|
||||||
|
style NATSBridge fill:#c5e1a5
|
||||||
|
style NATSBridge_Recv fill:#c5e1a5
|
||||||
|
style NATS fill:#fff3e0
|
||||||
|
style FileServer fill:#f3e5f5
|
||||||
```
|
```
|
||||||
|
|
||||||
## smartsend Return Value
|
## smartsend Return Value
|
||||||
|
|||||||
@@ -32,17 +32,38 @@ Each section builds on the previous one, gradually increasing in complexity.
|
|||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
flowchart TB
|
flowchart TB
|
||||||
subgraph NATSBridge_Architecture["NATSBridge Architecture"]
|
subgraph Sender["Julia Application (Sender)"]
|
||||||
direction TB
|
SenderApp[App Code]
|
||||||
|
NATSBridge_Send[NATSBridge]
|
||||||
Julia["Julia (NATS.jl)"]
|
NATS_Client[<b>NATS.jl</b>]
|
||||||
NATS["NATS Server"]
|
|
||||||
FileServer["File Server<br/>(HTTP Upload)"]
|
|
||||||
|
|
||||||
Julia <--> NATS
|
|
||||||
Julia --> FileServer
|
|
||||||
NATS --> FileServer
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
subgraph Receiver["Julia Application (Receiver)"]
|
||||||
|
ReceiverApp[App Code]
|
||||||
|
NATSBridge_Recv[NATSBridge]
|
||||||
|
NATS_Client_Recv[<b>NATS.jl</b>]
|
||||||
|
end
|
||||||
|
|
||||||
|
subgraph Infrastructure["Infrastructure"]
|
||||||
|
NATS[<b>NATS Server</b><br/>Message Broker]
|
||||||
|
FileServer[<b>HTTP File Server</b><br/>Upload/Download]
|
||||||
|
end
|
||||||
|
|
||||||
|
SenderApp --> NATSBridge_Send
|
||||||
|
NATSBridge_Send --> NATS_Client
|
||||||
|
NATS_Client --> NATS
|
||||||
|
|
||||||
|
NATS --> NATS_Client_Recv
|
||||||
|
NATS_Client_Recv --> NATSBridge_Recv
|
||||||
|
NATSBridge_Recv --> ReceiverApp
|
||||||
|
|
||||||
|
NATSBridge_Send -.->|HTTP POST upload| FileServer
|
||||||
|
FileServer -.->|HTTP GET download| NATSBridge_Recv
|
||||||
|
|
||||||
|
style SenderApp fill:#e8f5e9
|
||||||
|
style ReceiverApp fill:#e8f5e9
|
||||||
|
style NATS fill:#fff3e0
|
||||||
|
style FileServer fill:#f3e5f5
|
||||||
```
|
```
|
||||||
|
|
||||||
### Message Flow
|
### Message Flow
|
||||||
|
|||||||
Reference in New Issue
Block a user