In 2019 I contributed to Open Source library for communication of microservices over RabbitMQ. This library supports distributed tracing (Application Insights currently, Open Tracing in prospect) and JWT bearer authorization.

It can be valuable in the world of microservices and I use it at my work because:

  1. Distributed tracing is the tool to troubleshoot long request chains. “micro” for services implies a lot of them, that’s why request chains tend to be long, arising difficulty to finding failure root causes. Distributed tracing suits well for that, as you can see here.
  2. Bearer token is needed for passing identity and authorization info. If you don’t have a user identification passed through the call chain it’s impossible to implement security audit and object ownership at service level. Scope checks allows you to enforce permissions at microservice level.

Of course, JWT bearer token authorization and distributed tracing exist for HTTP, but they weren’t for RabbitMQ.

Library itself (.NET Standard) — https://github.com/dmlarionov/RabbitMQ.TraceableMessaging

Usage example — https://github.com/dmlarionov/RabbitMQ.TraceableMessaging-example1

I appeal to use it and make compatible ports for any languages.