兔子心跳是如何工作的



java 的原生 rabbitmq 客户端允许在连接设置上设置心跳,例如:

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

Rabbitmq 客户端对检测信号设置执行什么操作?它是将存根消息发送到特殊交换/队列还是其他什么?

有人可以详细解释一下吗?

来自 RMQ 检测信号文档:

网络可能以多种方式失败,有时非常微妙(例如高比率数据包丢失(。操作系统需要相当长的时间(例如,Linux 上的默认配置大约需要 11 分钟(才能检测到中断的 TCP 连接。AMQP 0-9-1 提供心跳功能,以确保应用层及时发现中断的连接(以及完全无响应的对等方(。检测信号还可以防御某些可能终止"空闲"TCP 连接的网络设备。

这不是对队列或存根消息的请求。这是一个 TCP/IP 连接,其中的数据包以检测信号的特定格式发送。

如果你想要真正的细节,你可以阅读AMQP 0.9.1规范,第4.2.1和4.2.7节,以及关于RabbitMQ如何纠正规范中的错误的勘误表。

检测信号超时值定义了 RabbitMQ 和客户端库在多长时间后应将 Twitter 连接视为无法访问(关闭(

相关内容

  • 没有找到相关文章

最新更新