Go to file
Mark van Renswoude d6138e2cfa Downgraded language version to 8
Hasn't seem to cause any issues in older .NET versions yet (only used new syntax features), but this will prevent using most unsupported new features for .NET Standard 2.0
2022-11-17 13:32:59 +01:00
Examples Added ValueTask support to flows 2022-02-09 12:21:47 +01:00
Tapeti Downgraded language version to 8 2022-11-17 13:32:59 +01:00
Tapeti.Autofac Added .NET Standard 2.1 as additional target framework 2022-02-09 08:35:57 +01:00
Tapeti.Benchmarks Reduced Invoke overhead for controller methods 2022-02-10 10:16:16 +01:00
Tapeti.CastleWindsor Added .NET Standard 2.1 as additional target framework 2022-02-09 08:35:57 +01:00
Tapeti.DataAnnotations Added ValueTask support 2022-02-09 11:27:07 +01:00
Tapeti.Flow Removed ValueTask overload for parallel request Converge method 2022-02-10 10:17:27 +01:00
Tapeti.Flow.SQL Added ValueTask support 2022-02-09 11:27:07 +01:00
Tapeti.Ninject Added .NET Standard 2.1 as additional target framework 2022-02-09 08:35:57 +01:00
Tapeti.Serilog Added ValueTask support 2022-02-09 11:27:07 +01:00
Tapeti.SimpleInjector Added .NET Standard 2.1 as additional target framework 2022-02-09 08:35:57 +01:00
Tapeti.Tests Added .NET Standard 2.1 as additional target framework 2022-02-09 08:35:57 +01:00
Tapeti.Transient Fixed #38 Durable queues are verified more than once 2022-02-09 12:42:05 +01:00
Tapeti.UnityContainer Added .NET Standard 2.1 as additional target framework 2022-02-09 08:35:57 +01:00
build Changed version number strategy to include CommitsSinceVersionSource 2019-10-01 10:27:48 +02:00
docs Added documentation for IFlowParallelRequest 2021-12-10 12:53:18 +01:00
resources Split parts into separate repositories 2021-10-07 15:38:43 +02: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 Split parts into separate repositories 2021-10-07 15:38:43 +02:00
Tapeti.png [ci skip] Major refactoring for 2.0 2019-08-13 20:30:04 +02:00
Tapeti.sln Reduced Invoke overhead for controller methods 2022-02-10 10:16:16 +01: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 Updated NuGet API key 2022-10-20 09:14:27 +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

Parts of Tapeti have been split into their own repository. This allows them to have their own version numbers which increases compatibility between shared message packages when services use different Tapeti versions.

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