使用Arduino MQTT库限制消息预取

使用Arduino MQTT库限制消息预取,arduino,rabbitmq,mqtt,Arduino,Rabbitmq,Mqtt,我正在使用Knollery的Arduino库,用于连接到带有MQTT插件的RabbitMQ的MQTT。虽然RabbitMQ配置示例声明我可以设置预取,但它似乎没有任何效果 我的消息很大,需要花时间在Arduino上处理,看起来它们会立即被Arduino拉到,直到以太网缓冲区满了,它就会掉下来——我看不到RabbitMQ管理控制台中有任何消息进入“就绪” 这是因为Arduino库不支持Qos1,所以在没有确认的情况下忽略预取吗?我假设AMQP预取也需要ack。无论如何,在不向库中添加Qos-1的情

我正在使用Knollery的Arduino库,用于连接到带有MQTT插件的RabbitMQ的MQTT。虽然RabbitMQ配置示例声明我可以设置预取,但它似乎没有任何效果

我的消息很大,需要花时间在Arduino上处理,看起来它们会立即被Arduino拉到,直到以太网缓冲区满了,它就会掉下来——我看不到RabbitMQ管理控制台中有任何消息进入“就绪”


这是因为Arduino库不支持Qos1,所以在没有确认的情况下忽略预取吗?我假设AMQP预取也需要ack。无论如何,在不向库中添加Qos-1的情况下(这有点超出我的理解范围,库似乎已经有一段时间没有更新了,所以Qos1似乎不太可能出现)。

您说您的消息很大;它们是否会大于arfuino客户端限制?Knollerary将能够给出明确的回答,但我95%确定Arduino客户端是QOS 0,因为它没有本地存储支持。您可以定义“大”吗。默认情况下,库中的消息限制为128字节,除非您更改PubSubClient.h中的常量。我已更新了库,以便通过~50k图像文件发送。(这样做有一个小错误,我今天会得到反馈)。进一步解释一下这个用例可能会有所帮助——队列正在发送黑白位图,以便在热敏打印机上打印。这些文件在被读回并发送到打印机之前会保存到SD(很快将成为外部SRAM)。打印速度非常慢,这就是为什么如果有很多消息(它们是一个tweetstream),那么它会开始备份,直到以太网(wizio820)缓冲区填满。首先,我不知道RabbitMQ和“预取”以及它们如何与MQTT QoS级别交互。arduino客户端仅支持并仅订阅QoS为0的服务。由于是单线程的,当消息到达回调发生时,您需要在从回调返回之前保存负载,因为客户端的内部缓冲区将被重用。