MassTransit.DataBusService 1.0.11-alpha

This is a prerelease version of MassTransit.DataBusService.
There is a newer prerelease version of this package available.
See the version list below for details.

Requires NuGet 2.5 or higher.

dotnet add package MassTransit.DataBusService --version 1.0.11-alpha
NuGet\Install-Package MassTransit.DataBusService -Version 1.0.11-alpha
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="MassTransit.DataBusService" Version="1.0.11-alpha" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MassTransit.DataBusService --version 1.0.11-alpha
#r "nuget: MassTransit.DataBusService, 1.0.11-alpha"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install MassTransit.DataBusService as a Cake Addin
#addin nuget:?package=MassTransit.DataBusService&version=1.0.11-alpha&prerelease

// Install MassTransit.DataBusService as a Cake Tool
#tool nuget:?package=MassTransit.DataBusService&version=1.0.11-alpha&prerelease

Сервис передачи данных для работы с RabbitMq

Эта библиотека предназначена для работы с очередью сообщений RabbitMq и основана на фреймворке MassTransit. По сути это просто обертка, которая скрывает некоторые механизмы настройки и упрощает работу с фреймворком MassTransit. Однако, базовые знания для работы с RabbitMq необходимы.

Начало работы

Для начала необходимо установить пакет

install-package MassTransit.DataBusService

Основной класс - это класс DataBus, который очень простой и умеет по сути только запустить/остановить сервис и публиковать сообщения. Все остальное делается в настройках и описывается в конфигурационном файле приложения. Для этого во время установки пакета в конфигурационном файле создается секция rabbitmq,

  <rabbitmq>
  ...
  </rabbitmq>

здесь описываются различные параметры настройки, строки подключения, настройки очередей и обработчиков сообщений.

Пример создания объекта и публикации сообщения:


    //Message handler definition
    public class Message1Handler: BaseMessageHandler<Message1>
    {
        public override Task MessageHandle(Message1 message)
        {
            return Console.Out.WriteLineAsync(message.Message);
        }
    }

    //Message definition
    public interface Message1
    {
        string Message { get; set; }
    }

    var dataBus = new DataBus();
    dataBus.Start(); //or StartAsync()
    Console.WriteLine("Bus started");
    dataBus.Publish<Message1>(new {Message = "Hello World!"});
    Console.ReadLine();
    dataBus.Stop(); //or StopAsync()

    /*Output
    Bus started
    Hello World!
    */

Параметры настроек

Этот параметр называется busSettings.
Пример:

<busSettings>
    <add key="workMode" value="RabbitMq">
</busSettings>

На данный момент для предусмотрен один параметр workMode, который может принимать одно из двух значений InMemory и RabbitMq. По названию понятно, что этот параметр задает режим работы библиотеки.

Строка подключения

Задает настройки подключения к серверу RabbitMq.
Пример:

<connections>
    <add name="connection1" url="rabbitmq://localhost/" user="admin" password="admin" />
</connections>

Настройки очередей

Здесь можно указать то, как должна обрабатывать сообщения определенная очередь. При этом название очереди должно совпадать с наименованием одной из очереди указанной в настройках обработчиков сообщений.
Например, для обработчика сообщения

    <add type="MassTransit_Saga.CreateNewBook.Message1Handler, MassTransit_Saga.CreateNewBook" queue="message1_queue" />

указана очередь message1_queue, тогда настройка для этой очередь должна иметь примерно такой вид:

<queues>
    <add name="message1_queue" threadCount="8" prefetchCountToThread="1" threadsByCoreCount="false" />
</queues>

где, name - имя очереди, threadCount - количество потоков обрабатывающих сообщения (значение по умолчанию 1), prefetchCount - количество предварительно выбранных сообщений для одного потока, которые шина забирает из очереди за один раз перед их обработкой (значение по умолчанию 1), threadsByCoreCount - флаг, указывающий, что количество потоков должно равняться количеству ядер процессора системы, этот параметр переопределяет параметр threadCount.

Обработчики сообщений

Здесь описываются какие объекты должны участвовать в обработке сообщений. Эти объекты должны напрямую наследоваться от базового класса обработчика сообщений.
Пример:

namespace Examples.MessageHandlers
{
    //Message definition
    public interface Message1
    {
        string Message { get; set; }
    }

    //Message handler definition
    public class Message1Handler : BaseMessageHandler<Message1>
    {
        public override Task MessageHandle(Message1 message)
        {
            return Console.Out.WriteLineAsync(message.Message);
        }
    }
}

Пример настройки в конфигурационном файле:

<mqhandlers>
    <add type="Examples.MessageHandlers.Message1Handler, Examples" queue="message1_queue"/>
</mqhandlers>

Здесь для дополнительной настройки очереди нужно создать запись с именем message1_queue в секции queues.

Удачи в работе!

Product Compatible and additional computed target framework versions.
.NET Framework net461 is compatible.  net462 was computed.  net463 was computed.  net47 was computed.  net471 is compatible.  net472 was computed.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.20-alpha 371 11/25/2019
1.0.19-alpha 373 7/10/2019
1.0.18-alpha 517 9/27/2018
1.0.17-alpha 541 9/26/2018
1.0.16-alpha 503 9/26/2018
1.0.15-alpha 499 9/26/2018
1.0.14-alpha 516 9/25/2018
1.0.13-alpha 525 9/25/2018
1.0.12-alpha 498 9/25/2018
1.0.11-alpha 515 9/20/2018

First release the alpha version