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

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

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

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

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

У нас на работе используется RPC over RabbitMQ между микросервисами.

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

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

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

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

Призываю делать совместимые порты для других языков (я написал для .NET). В мои проекты можно делать Pull-Request-ы на GitHub.