Coder Social home page Coder Social logo

motornet's Introduction

Motor.NET Logo

GitHub GitHub Workflow Status Nuget Codacy Badge

About Motor.NET

Motor.NET is a micro-service framework for .NET built on top of Microsoft Generic Hosting. It provides easy integration of RabbitMQ, Kafka (WIP) and HTTP as well as helpers for logging and tracing.

You should be up and running with just a few lines of code.

Examples

You find working examples for different use-cases under the examples folder.

Support Matrix

Component Consume Publish CloudEvents (Protocol) CloudEvents (JSON) Metrics Compression Custom
RabbitMQ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ priority, dynamic routing
Kafka ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ partitioning key, dynamic topic
Timer (:heavy_check_mark:) -
SQS (:heavy_check_mark:) -
NATS (:heavy_check_mark:) ✔️ ✔️

CloudEvents (Protocol): If supported, the protocol format uses headers from Kafka or RabbitMQ to store CloudEvent metadata. CloudEvents (JSON): If supported, CloudEvent published in the enveloped variant, see https://github.com/cloudevents/spec/blob/v1.0.1/json-format.md#3-envelope.

Health Checks

Motor.NET comes by default already with two health checks for message processing services (RabbitMQ, Kafka, Timer, and SQS):

  • MessageProcessingHealthCheck: Fails when no messages were consumed in a certain time frame from the Motor.NET internal queue although it has at least some messages.
  • TooManyTemporaryFailuresHealthCheck: Fails when too many messages led to a failure since the last message was correctly handled (either successful or as invalid input).

Compression (Optional)

Gzip compression can optionally be enabled for consumers and publishers. By enabling it for a publisher, the payload of all published messages will be compressed. Enabling it for a consumer will allow the consumer to decompress these messages. Consumers can however still consume uncompressed messages. This should make it easy to enable compression in an existing environment that does not use compression yet. It just needs to be enabled first for the consumers and afterwards for the publishers.

Thread Starvation Handling

Since .NET 6, Environment.ProcessorCount can be overwritten using env DOTNET_PROCESSOR_COUNT, see issue and blog. This can be particularly helpful within container runtimes with cpu resources being limited by cgroups.

License

Motor.NET is provided under the MIT license.

motornet's People

Contributors

ata-no-one avatar borisahrens avatar cavus700 avatar dependabot-preview[bot] avatar dependabot[bot] avatar doxthree avatar farodin91 avatar florianhockmann avatar kdrblkbs avatar pkemkes avatar prskr avatar rageagainsthepc avatar rngcntr avatar secana avatar unglaublicherdude avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.