Я написал библиотеку вызовов для RabbitMQ с поддержкой распределённой трассировки (Application Insights сейчас, Open Tracing в перспективе) и JWT.

Зачем я это сделал?

Мне это кажется невероятно полезным, я использую это на работе, вот почему:

  1. Без распределённой трассировки отсутствуют средства диагностики отказов при обработке цепочек вызовов в микросервисах; "микро" для сервисов подразумевает большое их количество, отсюда длинные цепочки вызовов и сложность установления причин отказов. Распределённая трассировка всё хорошо показывает.
  2. Без JWT bearer нет сквозной авторизации. Без этого, даже для назначения владельца объекту в нельзя определить конечного пользователя.

JWT bearer и решения по распределённой трассировке есть для HTTP-запросов, но для запросов по RabbitMQ их не было.

Почитайте подробнее почему следует строить микросервисную архитектуру на RabbitMQ.

Как это использовать?

Сами библиотеки (.NET) — https://github.com/dmlarionov/RabbitMQ.TraceableMessaging

Пример использования — https://github.com/dmlarionov/RabbitMQ.TraceableMessaging-example1

Как этому помочь?

Призываю делать совместимые порты для других языков (я написал для .NET). Чтобы улучшить мой код, делайте Pull-Request на GitHub.