Service clients
Java services call each other with Spring RestClient or HTTP exchange interfaces (AuthInternalClient, SocialInternalClient, and the feed set). shared-feign holds shared DTO types. New code should follow the existing HTTP interface in the service you are editing, not introduce a second client stack.
Rust uses splick-clients.
Conventions:
- Base URL from env (
*_SERVICE_BASE_URL), never a hardcoded host. - Internal calls send the internal API key.
- Timeouts are finite. Feed and messaging set explicit client timeouts.
- Map a downstream 4xx to a domain error. A 5xx or timeout on a critical read fails the request; on a side effect it is retried via outbox or inbox.