My fresh contribution to the Open Source is a microservice communication library for RabbitMQ. It supports distributed tracing (Application Insights currently, Open Tracing in prospect) and JWT bearer authorization.

Why I did it?

It can be valuable in the world of microservices because:

  1. Distributed tracing is the way to troubleshoot long request chains; "micro" for services implies a lot of them, that's why request chains tend to be long, arising difficulty for finding failure root causes. Distributed tracing suits well for that, check it out.
  2. Bearer token is a "must have" for user identification and authorization through the call chains. Scope checks allows you to enforce permissions at microservice level.

JWT bearer token and distributed tracing for HTTP are there for a years, but they weren't for RabbitMQ.

We do a lot of RabbitMQ RPCs at my job.

How to use it?

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

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

How to contribute?

I invite you to make compatible ports for other languages (I did it for .NET) or make PRs on GitHub.