AMQP保证以Go(golang)交付

Problem:

  • a few small devices running an agent written in Go (golang); OS is Linux x86_64
  • the devices are behind a firewall but they can establish outgoing connections to a cloud server
  • the devices must be able to reliably post some messages to a server in the cloud
  • the devices have local storage and they can persist messages (up to a limit) if the network is down or the cloud server is not available for whatever reason
  • the implementation on the devices must be very light weight, preferably without using another local helper server, though a light local process would be acceptable, but a library that can run in process might be preferred
  • a simple REST HTTP POST to the cloud server is not acceptable because the devices must then solve the reliable delivery problem

Where should I start looking to do this with AMQP in Go, assuming an AMQP implementation is the right choice? Which implementation can help? RabbitMQ?