Middleware

Choria communicates almost exclusively over the middleware, this document describes the target names and messages you might find on the middleware. You might use this for debuging or learning purposes using the choria tool pub and choria tool sub commands.

The Choria broker is a managed instance of the NATS Server, target syntax shown here matches the standards it supports.

Core RPC Messages

Unfederated

This is the core RPC related message targets, this is how machines discover nodes and communicate with them either 1:1 or 1:n.

These are namespaced on collective allowing one to make something like a VLAN - where servers and clients in a particular Subcollective can only find others configured with the same.

Target Description Schema
collective.reply.> Replies to requests made by clients, example mcollective.reply.dev1.example.net.c2a764e6013a44adb848904ff7d74ff4 choria:transport:1 with a choria:secure:reply:1 payload
collective.broadcast.agent.> Requests from clients to specific agents broadcasted to all servers interested choria:transport:1 with a choria:secure:request:1 payload
collective.broadcast.service.> Requests from clients to specific Service Agents broadcasted to all servers interested, handled by only 1 of those hosting the Service. choria:transport:1 with a choria:secure:request:1 payload
collective.broadcast.agent.registration The default destination for registration messages when no custom targets are configured choria:transport:1
collective.node.> Requests from clients to specific nodes regardless of the agent aka directed choria:transport:1 with a choria:secure:request:1 payload

Federated

Federation is a router between different networks, when a client makes a request it publishes to a specific address instead of the usual ones, the Federation Broker will then publish to the above targets on the user’s behalf.

Likewise replies are received on a different target and the Federation Broker will send them to the usual client locations on the servers behalf.

These are namespaced on collective here, each Federation Member Collective has a unique name.

Target Description Schema
choria.federation.collective.collective When federated, replies to clients from server that would typically go to collective.reply.> are directed here instead choria:transport:1 with a choria:secure:reply:1 payload
choria.federation.collective.federation When federated, requests to servers that would typically go to collective.broadcast.> or collective.node> goes here instead choria:transport:1 with a choria:secure:request:1 payload

Lifecycle

Lifecycle messages are small events the various Choria components publish indicating they are alive, starting, stopping etc.

Read our introductory blog post about events.

Target Description Schema
choria.lifecycle.event.TYPE.COMPONENT A specific event from a specific component, example choria.lifecycle.event.startup.server when a server starts various

Others

Target Description Schema
> Custom registration target set using plugin.choria.registration.file_content.target choria:transport:1 with a choria:registration:filecontent:1 payload
> Custom sources for consuming messages by the adapters like those set by plugin.choria.adapter.xx.ingest.topic choria:transport:1 with a payload depending on the producer settings