You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Mark van Renswoude b22c5200f4 Fixed #34 Reconnect not working when restarting RabbitMQ 5 days ago
Examples Moved new example 7 to examples subfolder 2 months ago
Tapeti Fixed #34 Reconnect not working when restarting RabbitMQ 5 days ago
Tapeti.Annotations Added SourceLink reference 1 week ago
Tapeti.Autofac Added SourceLink reference 1 week ago
Tapeti.CastleWindsor Added SourceLink reference 1 week ago
Tapeti.Cmd Implemented skip parameter for export and shovel commands 2 weeks ago
Tapeti.DataAnnotations Added SourceLink reference 1 week ago
Tapeti.DataAnnotations.Extensions Added SourceLink reference 1 week ago
Tapeti.Flow Added SourceLink reference 1 week ago
Tapeti.Flow.SQL Added SourceLink reference 1 week ago
Tapeti.Ninject Added SourceLink reference 1 week ago
Tapeti.Serilog Added SourceLink reference 1 week ago
Tapeti.SimpleInjector Added SourceLink reference 1 week ago
Tapeti.Tests Implemented RoutingKey attribute 4 months ago
Tapeti.Transient Added SourceLink reference 1 week ago
Tapeti.UnityContainer Added SourceLink reference 1 week ago
build Changed version number strategy to include CommitsSinceVersionSource 2 years ago
docs Implemented skip parameter for export and shovel commands 2 weeks ago
resources Added Tapeti.Flow.SQL to AppVeyor build 3 years ago
.gitignore Implemented EasyNetQ Hosepipe compatibility for Tapeti.cmd [ci skip] 2 years ago
GitVersion.yml Preparations for NuGet push 5 years ago
README.md Readme updated for 2.0 merge 2 years ago
Tapeti.png [ci skip] Major refactoring for 2.0 2 years ago
Tapeti.sln Moved new example 7 to examples subfolder 2 months ago
Tapeti.sln.DotSettings Start of Tapeti.Cmd [ci skip] 2 years ago
UNLICENSE Preparations for NuGet push 5 years ago
appveyor.yml EmbedUntrackedResources as recommended by NuGet Package Explorer 1 week ago

README.md

Introduction

Tapeti is a wrapper for the RabbitMQ .NET Client designed for long-running microservices. It’s main goal is to minimize the amount of messaging code required, and instead focus on the higher-level flow.

Key features

  • Consumers are declared using MVC-style controllers and are registered automatically based on annotations
  • Publishing requires only the message class, no transport details such as exchange and routing key
  • Flow extension (stateful request - response handling with support for parallel requests)
  • No inheritance required
  • Graceful recovery in case of connection issues, and in contrast to most libraries not designed for services, during startup as well
  • Extensible using middleware

Show me the code!

Below is a bare minimum message controller from the first example project to get a feel for how messages are handled using Tapeti.

/// <summary>
/// Example of a simple broadcast message used in the standard publish - subscribe pattern
/// </summary>
public class PublishSubscribeMessage
{
    [Required(ErrorMessage = "Don't be impolite, supply a {0}")]
    public string Greeting { get; set; }
}


[MessageController]
[DynamicQueue("tapeti.example.01")]
public class ExampleMessageController
{
    public ExampleMessageController() { }

    public void HandlePublishSubscribeMessage(PublishSubscribeMessage message)
    {
        Console.WriteLine("Received message: " + message.Greeting);
    }
}

More details and examples can be found in the documentation as well as the example projects included with the source.

Documentation

The documentation for Tapeti is available on Read the Docs:

Master branch (stable release)
Documentation Status

Develop branch
Documentation Status

Builds

Builds are automatically run using AppVeyor, with the resulting packages being pushed to NuGet.

Master build (stable release) Build status

Latest build Build status