Merge back to master (#21)

* Refactor ClientManager and RpcClient (#9)

* Ensure rpc stub dispose correctly when shutdown (#10)

* Transparent retry when query topic route entries

* Make sure stub shutdown gracefully

* Log when something is wrong (#11)

* Supply the residual RPC request (#12)

* Fix a series of naming issues (#13)

* Implement the first alpha version of PushConsumer, with many TODOs (#14)

Implement an initial version of PushConsumer

* Polish code (#15)

* WIP: Start to adapt to protocol v2

* WIP: debug telemetry bi-direction streaming

* Fix telemetry by adding x-mq-client-id header

* WIP:

* Make producer work

* Polish code (#20)

* Add package OpenTelemetry and Opentelemetry.API

* WIP: write unit tests

* WIP

* Make Shutdown async

* WIP: refactor start procedure

* WIP

* WIP

* WIP: receive messages

* WIP: add change invisible duration

* Minor fix

* Adjust message

* Add unit tests for Producer.Send

* WIP: prepare to add unit test for SimpleConsumer.Receive

* WIP: Unit tests for SimpleConsumer.Receive

* Add unit tests for SimpleConsumer

* Collect metrics for Producer

* Fix minor issue

* Add custom otlp exporter

* add MeterProvider

Co-authored-by: aaron ai <yangkun.ayk@alibaba-inc.com>
72 files changed
tree: 1333d2263ab30870681a90fd10e8eef1b8f0763e
  1. .github/
  2. examples/
  3. rocketmq-client-csharp/
  4. tests/
  5. .asf.yaml
  6. .gitignore
  7. LICENSE
  8. NOTICE
  9. README.md
  10. rocketmq-client.sln
README.md

CI

Introduction

Project rocketmq-client-csharp is targeted to implement C# binding in native C# code. At the current moment, it is still a work-in-progress project. Do not use it in production till it grows mature enough.

Architecture

Basically, this project would follow the same paradigm of rocketmq-client-cpp v5.0.0. Namely, we would build the whole client following protocols described in rocketmq-apis on top of gRPC-dotnet, utilizing Protocol buffers to serialize and deserialize data in transmission.

How to build

Layout of this project roughly follows this guide. The solution contains a class library, a unit test module and an example console module.

  1. Install dotnet tool chains following instructions here;
  2. Visual Studio Code with official C# plugin is used during development;

Assuming you are at the home of this repository,

Build

dotnet build

Run Unit Tests

dotnet test -l "console;verbosity=detailed"

Run Examples

dotnet run -p examples

License

This project follows Apache License Version 2.0.

How to contribute

Similar to other Apache RocketMQ projects, we welcome contributions in various ways, from filing a bug report, correcting type error, document writing to complete feature implementation. Any attempt to make this project better is welcome.

If this project catches your attention, do not hesitate to make a pull request.