https://speakerdeck.com/manhdaovan/write-your-own-async-rpc-framework
My own asynchronous RPC framework that support message in ANY format.
- Default message format is JSON. Support protobuf message without any touch.
- Default message transporter is AWS SQS.
- If you use message in JSON format:
- Define message struct as in
example/message/free_message.go
- Define service that having RPC interfaces and implementation as in
example/service/free_service.go
- The service and methods descriptions part could be auto generate after having message struct and RPC interfaces
- Register it on server side as in
example/cmd/server/main.go
- Define message struct as in
- If you use message in Protobuf format:
- Generate message struct and RPC interfaces using
protoc
as inexample/Makefile
- Define service and method descriptions as in
example/service/grpc_service_extend.go
, and implement RPC interfaces- The service and methods descriptions part could be auto generate after having message struct and RPC interfaces
- Register it on server side as in
example/cmd/server/main.go
- Generate message struct and RPC interfaces using
- Or you can create your own message format and use it, by implement your own message encoder/decoder
- Other steps are similar to above steps
See /example
directory source code for more details
- Message encode/decode function
- Message sender/receiver/deleter
- Auto generate Service code in case of protobuf message
- Unit test :D
- Support synchronous RPC