# Clustering Connections

CybusMQ features optimized inter-node clustering connections that deliver reliable message preservation and high throughput. This ensures consistent communication between broker nodes even under challenging network conditions.

In a CybusMQ cluster, broker nodes communicate with each other to route messages between MQTT clients connected to different nodes. The clustering connection system handles the reliable transfer of messages over TCP connections between nodes.

## How It Works

### Sender Architecture

CybusMQ uses the following components to send messages to peer nodes:

* **Queue Process**: Continuously receives messages from MQTT sessions and stores them in a queue.
* **Sender Process**: Handles TCP send operations with configurable timeouts.

This separation allows the sender process to use longer timeout settings without blocking message collection from MQTT sessions. If the connection is lost, the queue process continues collecting messages, preventing message loss when the queue is properly sized.

Connection recovery uses an incremental backoff time for reconnection attempts.

### Receiver Architecture

The receiver side uses a pool of router processes to handle incoming messages from peer nodes. This pool-based approach improves overall throughput, particularly for routing-intensive inter-node traffic with high message volumes and small payloads.

Messages on the same topic and QoS are routed by the same process, which guarantees message ordering. Improved throughput is achieved when messages are distributed across multiple topics.

## Benefits

* **Message preservation**: Messages are not lost during connection interruptions when queues are properly sized.
* **Better connection stability**: Longer timeout settings handle less reliable connections more effectively.
* **Higher throughput**: Router process pools enable parallel processing of incoming messages.
* **Maintained ordering**: Per-topic/QoS routing ensures message order is preserved.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.cybus.io/broker/cybusmq/configuration/clustering-connections.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
