Go to file
Mark van Renswoude c453b96a86 Readme updated for 2.0 merge 2019-10-21 14:03:48 +02:00
Examples Added support for the Obsolete attribute to remove bindings and queues with backwards compatibility 2019-08-20 11:47:53 +02:00
Tapeti Updated Newtonsoft.Json version 2019-10-16 10:11:27 +02:00
Tapeti.Annotations Added back version information 2019-10-01 10:18:12 +02:00
Tapeti.Autofac Added back version information 2019-10-01 10:18:12 +02:00
Tapeti.CastleWindsor Added back version information 2019-10-01 10:18:12 +02:00
Tapeti.Cmd Implemented EasyNetQ Hosepipe compatibility for Tapeti.cmd [ci skip] 2019-10-17 11:34:08 +02:00
Tapeti.DataAnnotations Added back version information 2019-10-01 10:18:12 +02:00
Tapeti.DataAnnotations.Extensions Added back version information 2019-10-01 10:18:12 +02:00
Tapeti.Flow Added back version information 2019-10-01 10:18:12 +02:00
Tapeti.Flow.SQL Fixed #19: No retry in Flow.SQL 2019-10-10 16:26:13 +02:00
Tapeti.Ninject Added back version information 2019-10-01 10:18:12 +02:00
Tapeti.Serilog Possible fix for #18 Two consumers from same connection after reconnect 2019-10-10 16:03:47 +02:00
Tapeti.SimpleInjector Added back version information 2019-10-01 10:18:12 +02:00
Tapeti.Tests [ci skip] Fixed the last of the ReSharper code issues 2019-08-15 16:00:04 +02:00
Tapeti.Transient Added back version information 2019-10-01 10:18:12 +02:00
Tapeti.UnityContainer Added back version information 2019-10-01 10:18:12 +02:00
build Changed version number strategy to include CommitsSinceVersionSource 2019-10-01 10:27:48 +02:00
docs Reintroduced the separate introduction page, as it was causing tree issues on ReadTheDocs 2019-08-20 12:55:12 +02:00
resources Added Tapeti.Flow.SQL to AppVeyor build 2018-12-19 21:58:50 +01:00
.gitignore Implemented EasyNetQ Hosepipe compatibility for Tapeti.cmd [ci skip] 2019-10-17 11:34:08 +02:00
GitVersion.yml Preparations for NuGet push 2017-02-08 22:09:06 +01:00
README.md Readme updated for 2.0 merge 2019-10-21 14:03:48 +02:00
Tapeti.png [ci skip] Major refactoring for 2.0 2019-08-13 20:30:04 +02:00
Tapeti.sln Start of Tapeti.Cmd [ci skip] 2019-10-16 13:54:43 +02:00
Tapeti.sln.DotSettings Start of Tapeti.Cmd [ci skip] 2019-10-16 13:54:43 +02:00
UNLICENSE Preparations for NuGet push 2017-02-08 22:09:06 +01:00
appveyor.yml Refreshed NuGet API key [ci skip] 2019-10-10 16:09:57 +02:00

README.md

Introduction

Tapeti is a wrapper for the RabbitMQ .NET Client designed for long-running microservices. Its 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