Busrpc is an RPC framework designed with microservice architecture principles in mind. It relies on a generalized message bus/queue/broker (for example, NATS or RabbitMQ) as a transport layer and protocol buffers as message format.
The framework consists of the following components:
- Technical documentation, namely busrpc API specification, bus-dependent API specializations and a style guide for an API protobuf files
- Template busrpc.proto file, which contains definitions of the basic busrpc protobuf types and custom options
- Command-line development tool for a busrpc microservice developers
- Bus-dependent libraries for a busrpc microservice development
- Bus-dependent clients for testing/observing running busrpc backends
An example of busrpc API for a simple chat application backend can be found in the example/ directory.
Currently no client libraries designed specifically for busrpc APIs exist, which means that you will probably implement one for your platform determined by a combination of programming language and particular message bus/queue/broker. It's usually not a big deal, because you will probably use some client library from the message bus/queue/broker developer (for example, see here for NATS client libraries or here for RabbitMQ client libraries) and implement busrpc-specific wrappers over it. Contributions of such busrpc client libraries are highly appreciated!
Clients allow developers to test and observe running busprc backends and usually provide at least the following commands:
call
- to call a busrpc methodimpl
- to implement a busrpc methodobserve
- to observe calls of busrpc methods
Currently no clients are provided. To be done.
Any contributions are highly appreciated:
- suggestions to the busrpc specification
- specializations for various message bus/queue/broker techonologies
- new commands for busrpc development tool
- clients for testing/observing busrpc backends
- busrpc client libraries
If you want to discuss/suggest some feature, create an issue in this repository.
If you want to contribute code to busprc development tool, fork it's repository and make your changes in a separate branch. When the changes are ready, create a pull request to the develop
branch.
If you have implemented new busrpc client or library, create an issue in this repository with a link to your project and I will add it to the list.