Я новичок в Rabbitmq, и у меня проблемы с удалкой моей очереди. Я не хочу, чтобы что -то было удалено автоматически. Я установил очередь, чтобы не удалять, но каждый раз, когда я запускаю приложение, очередь удаляется на выходе. Так что, если приемное приложение сбоятся, оно может просто перезапустить и получить пропущенные сообщения. Fanout - это не вариант, так как я хочу, чтобы каждый клиент имел возможность получить только «тему», которую они хотят, а не каждую беспорядка. Документы Rabbitmq все говорят, что Auto Delete = false должен сделать это.using RabbitMQ.Client;
using System.Text;
var factory = new ConnectionFactory { HostName = "localhost" };
using var connection = await factory.CreateConnectionAsync();
using var channel = await connection.CreateChannelAsync();
await channel.ExchangeDeclareAsync(exchange: "BeatS", type: ExchangeType.Topic, durable: true, autoDelete: false);
var routingKey = (args.Length > 0) ? args[0] : "Updated";
var message = (args.Length > 1) ? string.Join(" ", args.Skip(1).ToArray()) : "Hello World!";
var body = Encoding.UTF8.GetBytes(message);
await channel.BasicPublishAsync(exchange: "BeatS", routingKey: routingKey, body: body);
Console.WriteLine($" [x] Sent '{routingKey}':'{message}'");
Console.Read();
< /code>
Я отлично работает. Отправляет сообщение. < /P>
Вот получение: < /p>
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System.Text;
var factory = new ConnectionFactory { HostName = "localhost" };
using var connection = await factory.CreateConnectionAsync();
using var channel = await connection.CreateChannelAsync();
await channel.ExchangeDeclareAsync(exchange: "BeatS", type: ExchangeType.Topic, durable:true, autoDelete:false);
// declare a server-named queue
QueueDeclareOk queueDeclareResult = await channel.QueueDeclareAsync(autoDelete:false,durable:true);
string queueName = queueDeclareResult.QueueName;
await channel.QueueBindAsync(queue: queueName, exchange: "BeatS", routingKey: "Updated");
Console.WriteLine(" [*] Waiting for messages. To exit press CTRL+C");
var consumer = new AsyncEventingBasicConsumer(channel);
consumer.ReceivedAsync += (model, ea) =>
{
var body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
var routingKey = ea.RoutingKey;
Console.WriteLine($" [x] Received '{routingKey}':'{message}'");
return Task.CompletedTask;
};
await channel.BasicConsumeAsync(queueName, autoAck: true, consumer: consumer);
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
< /code>
отлично работает. Может получить сообщения. Но как только приложение приема закрыта, очередь удалена, хотя в коде говорится, что оно не должно быть. Та же команда перечисляет 0 очередей после закрытия приложения.
Подробнее здесь: https://stackoverflow.com/questions/797 ... ng-deleted
Предотвратить удаление очереди RabbitMQ ⇐ C#
Место общения программистов C#
1753650727
Anonymous
Я новичок в Rabbitmq, и у меня проблемы с удалкой моей очереди. Я не хочу, чтобы что -то было удалено автоматически. Я установил очередь, чтобы не удалять, но каждый раз, когда я запускаю приложение, очередь удаляется на выходе. Так что, если приемное приложение сбоятся, оно может просто перезапустить и получить пропущенные сообщения. Fanout - это не вариант, так как я хочу, чтобы каждый клиент имел возможность получить только «тему», которую они хотят, а не каждую беспорядка. Документы Rabbitmq все говорят, что Auto Delete = false должен сделать это.using RabbitMQ.Client;
using System.Text;
var factory = new ConnectionFactory { HostName = "localhost" };
using var connection = await factory.CreateConnectionAsync();
using var channel = await connection.CreateChannelAsync();
await channel.ExchangeDeclareAsync(exchange: "BeatS", type: ExchangeType.Topic, durable: true, autoDelete: false);
var routingKey = (args.Length > 0) ? args[0] : "Updated";
var message = (args.Length > 1) ? string.Join(" ", args.Skip(1).ToArray()) : "Hello World!";
var body = Encoding.UTF8.GetBytes(message);
await channel.BasicPublishAsync(exchange: "BeatS", routingKey: routingKey, body: body);
Console.WriteLine($" [x] Sent '{routingKey}':'{message}'");
Console.Read();
< /code>
Я отлично работает. Отправляет сообщение. < /P>
Вот получение: < /p>
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System.Text;
var factory = new ConnectionFactory { HostName = "localhost" };
using var connection = await factory.CreateConnectionAsync();
using var channel = await connection.CreateChannelAsync();
await channel.ExchangeDeclareAsync(exchange: "BeatS", type: ExchangeType.Topic, durable:true, autoDelete:false);
// declare a server-named queue
QueueDeclareOk queueDeclareResult = await channel.QueueDeclareAsync(autoDelete:false,durable:true);
string queueName = queueDeclareResult.QueueName;
await channel.QueueBindAsync(queue: queueName, exchange: "BeatS", routingKey: "Updated");
Console.WriteLine(" [*] Waiting for messages. To exit press CTRL+C");
var consumer = new AsyncEventingBasicConsumer(channel);
consumer.ReceivedAsync += (model, ea) =>
{
var body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
var routingKey = ea.RoutingKey;
Console.WriteLine($" [x] Received '{routingKey}':'{message}'");
return Task.CompletedTask;
};
await channel.BasicConsumeAsync(queueName, autoAck: true, consumer: consumer);
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
< /code>
отлично работает. Может получить сообщения. Но как только приложение приема закрыта, очередь удалена, хотя в коде говорится, что оно не должно быть. Та же команда перечисляет 0 очередей после закрытия приложения.
Подробнее здесь: [url]https://stackoverflow.com/questions/79716696/prevent-rabbitmq-queue-from-being-deleted[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия