TG Telegram Group & Channel
.NET Разработчик | United States America (US)
Create: Update:

День 2338. #ЗаметкиНаПолях
RabbitMQ в .NET с Нуля. Продолжение

Начало

Получатель
Прослушивает очередь и обрабатывает сообщения по мере их поступления. Он должен:
- подключиться к RabbitMQ,
- подписаться на очередь,
- ожидать сообщений,
- десериализовывать и обрабатывать сообщения.

Рекомендуемый и наиболее удобный способ получения сообщений — настроить подписку с помощью интерфейса IAsyncBasicConsumer. Затем сообщения будут доставляться автоматически по мере их поступления. Один из способов реализации потребителя — использовать класс AsyncEventingBasicConsumer, в котором доставки и другие события жизненного цикла потребителя реализованы как события C#:

public class EmailConsumer : BackgroundService
{
private const string QUEUE =
"email-queue";

protected override async Task
ExecuteAsync(CancellationToken ct)
{
var fctry = new ConnectionFactory() {
HostName = "localhost" };
using var conn =
await fctry.CreateConnectionAsync(ct);
using var channel =
await conn.CreateChannelAsync(cancellationToken: ct);

await channel.QueueDeclareAsync(
queue: QUEUE,
durable: true,
exclusive: false,
autoDelete: false,
arguments: null,
cancellationToken: ct);

var consumer =
new AsyncEventingBasicConsumer(channel);
consumer.ReceivedAsync +=
async (sender, eventArgs) =>
{
var body = eventArgs.Body.ToArray();
var json = Encoding.UTF8.GetString(body);
var email =
JsonSerializer.Deserialize<Email>(json);

Console.WriteLine(
$"Email: {email?.To}, Тема: {email?.Subject}");

// Отправляем email…
Task.Delay(1000).Wait();

await ((AsyncEventingBasicConsumer)sender)
.Channel
.BasicAckAsync(
eventArgs.DeliveryTag,
multiple: false);
};

await channel.BasicConsumeAsync(
queue: QUEUE,
autoAck: true,
consumer: consumer,
cancellationToken: ct);
}
}


Окончание следует…

Источник:
https://thecodeman.net/posts/rabbitmq-in-dotnet-from-scratch

День 2338. #ЗаметкиНаПолях
RabbitMQ в .NET с Нуля. Продолжение

Начало

Получатель
Прослушивает очередь и обрабатывает сообщения по мере их поступления. Он должен:
- подключиться к RabbitMQ,
- подписаться на очередь,
- ожидать сообщений,
- десериализовывать и обрабатывать сообщения.

Рекомендуемый и наиболее удобный способ получения сообщений — настроить подписку с помощью интерфейса IAsyncBasicConsumer. Затем сообщения будут доставляться автоматически по мере их поступления. Один из способов реализации потребителя — использовать класс AsyncEventingBasicConsumer, в котором доставки и другие события жизненного цикла потребителя реализованы как события C#:
public class EmailConsumer : BackgroundService
{
private const string QUEUE =
"email-queue";

protected override async Task
ExecuteAsync(CancellationToken ct)
{
var fctry = new ConnectionFactory() {
HostName = "localhost" };
using var conn =
await fctry.CreateConnectionAsync(ct);
using var channel =
await conn.CreateChannelAsync(cancellationToken: ct);

await channel.QueueDeclareAsync(
queue: QUEUE,
durable: true,
exclusive: false,
autoDelete: false,
arguments: null,
cancellationToken: ct);

var consumer =
new AsyncEventingBasicConsumer(channel);
consumer.ReceivedAsync +=
async (sender, eventArgs) =>
{
var body = eventArgs.Body.ToArray();
var json = Encoding.UTF8.GetString(body);
var email =
JsonSerializer.Deserialize<Email>(json);

Console.WriteLine(
$"Email: {email?.To}, Тема: {email?.Subject}");

// Отправляем email…
Task.Delay(1000).Wait();

await ((AsyncEventingBasicConsumer)sender)
.Channel
.BasicAckAsync(
eventArgs.DeliveryTag,
multiple: false);
};

await channel.BasicConsumeAsync(
queue: QUEUE,
autoAck: true,
consumer: consumer,
cancellationToken: ct);
}
}


Окончание следует…

Источник:
https://thecodeman.net/posts/rabbitmq-in-dotnet-from-scratch


>>Click here to continue<<

.NET Разработчик




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)