RabbitMQ和IoT设备:保持队列开放?

62lalag4  于 12个月前  发布在  RabbitMQ
关注(0)|答案(2)|浏览(167)

我们正在一个新项目中使用RabbitMQ。我们将让物联网设备与队列进行通信。
对于将信息发送到云端的设备,我们没有看到任何问题,但有时我们需要将消息从后端传递到物联网设备。为此,我们让设备打开一个独占队列。这是完美的,只要设备在线。当它们不存在时,队列将关闭,并且不再向其发送任何消息。
有没有一种方法可以保持队列打开,这样消息就可以一直保存到物联网设备重新在线?
反之亦然:是否有某种方法可以从物联网设备开始保证交付。举例来说:每15分钟测量一次能量。如果连接断开,则应将消息存储在磁盘上(以防止断电时消息丢失)。它们将在连接重新联机时发送。是否存在实现此功能的服务或客户端库,或者我们需要自己开发此功能?

hjzp0vay

hjzp0vay1#

有没有一种方法可以保持队列打开,这样消息就可以一直保存到物联网设备重新在线?
使用常规队列,并确保它是持久的,如果你希望它在RabbitMQ重启后仍然存在。
是否有某种方法可以从物联网设备开始保证交付。
这取决于您使用的库,但您没有告诉我们您使用的是什么库或什么协议(例如,AMQP与MQTT)。
一些库提供自动重新连接和拓扑(队列、交换等)的重新创建,但我不知道有任何库提供消息的本地存储,直到代理再次可用。你得自己编代码。
请仔细阅读有关发布者确认和消费者确认的文档,因为这些都是可靠消息传递link所必需的。

f2uvfpb9

f2uvfpb92#

我们的云有几个名为CredentialsBucket的交换和凭证,分配给一组物联网设备。当物联网设备注册时,我们会向它们提供此凭据,其中包括持久队列和交换。当物联网设备推送消息时,它会通过交换进入云,我们使用HMAC进行额外的安全检查。当云发送消息时,它直接将其发送到他的队列(在我们的情况下没有持久消息),物联网设备执行相同的安全检查。

相关问题