MassTransit.DataBusService
1.0.11-alpha
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
<PackageReference Include="MassTransit.DataBusService" Version="1.0.11-alpha" />
paket add MassTransit.DataBusService --version 1.0.11-alpha
#r "nuget: MassTransit.DataBusService, 1.0.11-alpha"
// 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 | Versions 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. |
-
- MassTransit (>= 5.1.4)
- Newtonsoft.Json (>= 11.0.2)
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 | 390 | 11/25/2019 |
1.0.19-alpha | 386 | 7/10/2019 |
1.0.18-alpha | 546 | 9/27/2018 |
1.0.17-alpha | 565 | 9/26/2018 |
1.0.16-alpha | 532 | 9/26/2018 |
1.0.15-alpha | 522 | 9/26/2018 |
1.0.14-alpha | 540 | 9/25/2018 |
1.0.13-alpha | 549 | 9/25/2018 |
1.0.12-alpha | 520 | 9/25/2018 |
1.0.11-alpha | 545 | 9/20/2018 |
First release the alpha version