The native rabbitmq client for java allows to setup heartbeat on connection settings, for example like this:

```
import com.rabbitmq.client.ConnectionFactory;

...

ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setAutomaticRecoveryEnabled(true);
        connectionFactory.setHost("some://host");
        connectionFactory.setConnectionTimeout(5000);
        connectionFactory.setRequestedHeartbeat(5); // keeps an idle connection alive

```

What is the rabbitmq client doing with the heartbeat settings?
Is it sending a stubbed message to special exchange/queue or what does it else?

Can somebody explain it in details?