You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -73,11 +76,17 @@ See the runnable transport-specific consumer programs in [examples/README.md](ex
73
76
74
77
`HttpClient::consumer` binds its callback socket before registering subscriptions, then owns the axum server, heartbeat, and registration lifecycle. For an application-owned endpoint, use `HttpClient::webhook_registration` with `eventmesh::http::codec::{parse_push_body, WebhookReply}`. TCP unsubscribe is session-wide, so its API is `unsubscribe_all()`.
75
78
79
+
All consumers use the same local lifecycle contract: `shutdown()` only signals
80
+
background work to stop, while `join().await` waits for it and reports task or
81
+
transport failures. HTTP consumers and webhook registrations additionally
82
+
provide `close().await`, which unregisters remote subscriptions before
83
+
signalling shutdown and joining.
84
+
76
85
HTTP request/reply is not exposed because the current SDK and stock Runtime do not provide a complete HTTP responder path. Use gRPC or TCP for request/reply.
77
86
78
87
`Message` is a public dialect envelope, not a wire format. The selected transport owns protobuf, HTTP form, or TCP frame serialization. With `cloud_events`, CloudEvents remain CloudEvents; `Message::into_event_mesh()` does not silently flatten them into the native EventMesh model.
79
88
80
-
`EventMeshMessage` is likewise a business model rather than a stable serde JSON contract. gRPC, HTTP, and TCP convert it into private transport-specific wire DTOs. Native messages require non-blank topics and content; an explicit `ttl`must be a positive millisecond value no greater than `i32::MAX`. EventMesh does not define a never-expire TTL sentinel.
89
+
`EventMeshMessage` is likewise a business model rather than a stable serde JSON contract. gRPC, HTTP, and TCP convert it into private transport-specific wire DTOs. A topic must be non-blank and contentmust be present, but empty content is accepted for Java SDK interoperability. Inbound TTL metadata is preserved as received; each transport applies its own outbound content and TTL limits when publishing.
0 commit comments