All Projects β†’ Im5tu β†’ OpenMessage

Im5tu / OpenMessage

Licence: other
Receive messages from multiple sources using a centralised delivery pipeline

Programming Languages

C#
18002 projects
powershell
5483 projects

Projects that are alternatives of or similar to OpenMessage

tomodachi
πŸ’» Microservice library / framework using Python's asyncio event loop with full support for HTTP + WebSockets, AWS SNS+SQS, RabbitMQ / AMQP, middleware, etc. Extendable for GraphQL, protobuf, gRPC, among other technologies.
Stars: ✭ 170 (+639.13%)
Mutual labels:  rabbitmq, aws-sqs, aws-sns
Masstransit
Distributed Application Framework for .NET
Stars: ✭ 4,103 (+17739.13%)
Mutual labels:  rabbitmq, azure-service-bus
symfony-messenger
Bridge to use Symfony Messenger on AWS Lambda with Bref
Stars: ✭ 48 (+108.7%)
Mutual labels:  aws-sqs, aws-sns
OpenSleigh
OpenSleigh is a Saga management library for .NET Core.
Stars: ✭ 198 (+760.87%)
Mutual labels:  rabbitmq, azure-service-bus
Machinery
Machinery is an asynchronous task queue/job queue based on distributed message passing.
Stars: ✭ 5,821 (+25208.7%)
Mutual labels:  rabbitmq, aws-sqs
ontopic
Display SNS messages on your terminal
Stars: ✭ 20 (-13.04%)
Mutual labels:  aws-sqs, aws-sns
Liquid-Application-Framework
Liquid Application Framework documentation, useful links and sample project
Stars: ✭ 467 (+1930.43%)
Mutual labels:  rabbitmq, servicebus
terraform-aws-sqs
Terraform module which creates SQS resources on AWS πŸ‡ΊπŸ‡¦
Stars: ✭ 53 (+130.43%)
Mutual labels:  aws-sqs
Rebus.RabbitMq
🚌 RabbitMQ transport for Rebus
Stars: ✭ 51 (+121.74%)
Mutual labels:  rabbitmq
Distributed-eStore
Ecommerce SPA application with a microservices architecture implemented from scratch. Tech stack - Docker, Consul, Fabio, RabbitMQ, .Net Core, Mediatr, CQRS, React, Redux. .NET Core Microservices template, .NET React Redux, .NET RabbitMQ, .NET Distributed, Docker, .NET Core with Docker.
Stars: ✭ 99 (+330.43%)
Mutual labels:  rabbitmq
celery-connectors
Want to handle 100,000 messages in 90 seconds? Celery and Kombu are that awesome - Multiple publisher-subscriber demos for processing json or pickled messages from Redis, RabbitMQ or AWS SQS. Includes Kombu message processors using native Producer and Consumer classes as well as ConsumerProducerMixin workers for relay publish-hook or caching
Stars: ✭ 37 (+60.87%)
Mutual labels:  rabbitmq
dokku-rabbitmq
a rabbitmq plugin for dokku
Stars: ✭ 41 (+78.26%)
Mutual labels:  rabbitmq
rabbitmq-peer-discovery-aws
AWS-based peer discovery backend for RabbitMQ 3.7.0+
Stars: ✭ 23 (+0%)
Mutual labels:  rabbitmq
express-typescript-seed
Node API seed written in typescript using Express, Sequelize, Passport, and RabbitMQ
Stars: ✭ 67 (+191.3%)
Mutual labels:  rabbitmq
chinchilla
Making RabbitMq More Awesome!
Stars: ✭ 38 (+65.22%)
Mutual labels:  rabbitmq
formatbot1
Make instant view easily and fast, from any article on the internet in the best messenger ever Telegram
Stars: ✭ 127 (+452.17%)
Mutual labels:  rabbitmq
raspberrypi-boot
simple spring boot application running on raspberry pi measuring data via bmp085 sensor
Stars: ✭ 17 (-26.09%)
Mutual labels:  rabbitmq
rabbitmq-vshovel
RabbitMQ vShovel plugin
Stars: ✭ 26 (+13.04%)
Mutual labels:  rabbitmq
rabbitmq-tracing
RabbitMQ Tracing
Stars: ✭ 48 (+108.7%)
Mutual labels:  rabbitmq
GuessWhich
Evaluating Visual Conversational Agents via Cooperative Human-AI Games
Stars: ✭ 20 (-13.04%)
Mutual labels:  rabbitmq

OpenMessage

OpenMessage aims to simplify the service bus paradigm by using pre-existing patterns to build an extensible architecture.

Designed for the generic hosting model that .Net Core 3 supports, the library aims to be able to cater for a wide range of scenarios, including receiving the same type from multiple sources - aiding a whole host of scenarios.

The core library OpenMessage ships with an InMemory provider and a JSON serializer from the AspNetCore team (System.Text.Json).

Getting Started

The library is based around the Microsoft.Extensions.* packages and relies upon the abstractions for dependency injection and logging allowing you the freedom to pick the implementations that best suit your scenario.

Note: The rest of this guide requires you to be using version 3 of Microsoft.Extensions.*.

1 - Install the OpenMessage package:

PM> Install-Package OpenMessage

You may also any of the providers listed below for this sample as the Memory provider ships out of the box.

2 - Configure your host:

internal class Program
{
    private static async Task Main()
    {
        await Host.CreateDefaultBuilder()
            .ConfigureServices(services => services.AddOptions().AddLogging())
            // Configure OpenMessage
            .ConfigureMessaging(host =>
            {
                // Adds a memory based consumer and dispatcher
                host.ConfigureMemory<Person>();

                // Adds a handler that writes the entire message in json format to the console
                host.ConfigureHandler<Person>(msg => Console.WriteLine($"Hello {msg.Value.Name}"));
            })
            .Build()
            .RunAsync();
    }
}

Sending Messages

To send messages, inject IDispatcher<T> and call DispatchAsync and the library will route your message to the configured dispatcher for that type.

Receiving Messages

When a message is received, it flows as follows:

Message Pump > Channel > Consumer Pump > Pipeline > Handler

This library takes care of everything except the handlers. You have a few choices for implementing a handler, all registered via .ConfigureHandler:

  1. Use a simple Action<Message<T>>
  2. Use a simple Func<Message<T>, Task>
  3. Inherit from Handler<T>
  4. Implement IHandler<T>

By default, after your handler has been run, and assuming the underlying provider supports it, the message is automatically acknowledged. This can be configured by calling ConfigurePipelineOptions<T> as well as options for the consumer pump and handler timeout.

Serializers

You can add more than one serializer to OpenMessage. In this scenario, all registered serializers are checked to see whether they can deserialize the message. When serializing the last registered serializer is used, service collection provider depending.

Here is a list of the available serializers:

  • Hyperion
  • Jil
  • JsonDotNet
  • MessagePack
  • MsgPack
  • Protobuf
  • ServiceStackJson
  • Utf8Json
  • Wire

Providers

With OpenMessage you can easily receive from multiple sources in a centralised pipeline whilst providing as much of the underlying providers flexibility as possible.

Here is a list of the available providers:

  • Apache Kafka
  • AWS SQS
  • AWS SNS
  • AWS Kinesis
  • AWS EventBridge
  • Azure Event Hubs
  • Azure Service Bus
  • Eventstore
  • InMemory
  • MediatR
  • NATS
  • RabbitMq

Note: Any unchecked providers are currently a work in progress.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].