RabbitMQ - это очередь сообщений, с которой я наиболее знаком. Он реализует AMQP так же, как qpid. AMQP является широко распространенным проводным протоколом, и существует множество доступных клиентских библиотек, таких как C ++, Java, Ruby, .Net, Python и т. Д.
Если распределенная служба нестабильна и не всегда подключена к сети, вы можете использовать надежную очередь сообщений для сохранения сообщений. Затем сообщения доставляются, когда распределенный сервис возвращается к жизни.
Если распределенная служба имеет низкую задержку и клиентская служба генерирует больше запросов, чем распределенная служба может обработать, очередь будет удерживать сообщения до тех пор, пока распределенная служба не сможет их обработать, в то же время позволяя клиенту обрабатывать данные без ограничений.
Если запросы должны быть распределены по нескольким службам, обмен позаботится о важных деталях, таких как доставка сообщения каждой распределенной службе один раз и только один раз.
Я не рекомендую использовать очереди сообщений, когда вам нужен синхронный вызов удаленной службы. Очереди сообщений изначально асинхронны.