This commit is contained in:
2026-03-05 07:23:24 +07:00
parent a98394b9b9
commit 206467e1fa
3 changed files with 93 additions and 46 deletions

View File

@@ -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
``` ```

View File

@@ -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

View File

@@ -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