Почему не все мои сообщения публикуются в очереди RabbitMQ?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Почему не все мои сообщения публикуются в очереди RabbitMQ?

Сообщение Anonymous »

Я хочу опубликовать 1 миллион сообщений в очереди RabbitMQ, но было опубликовано только 999 429 сообщений.
Это число не фиксировано. Каждый раз я запускал приложение с миллионом сообщений, но ни одно из них не было прочитано в очереди.
Вот исходный код консольного приложения, которое я использовал для публикации своих сообщений:
Вот исходный код консольного приложения, которое я использовал для публикации своих сообщений:
Вот исходный код консольного приложения, которое я использовал для публикации своих сообщений:
р>

Код: Выделить всё

public class Program
{
private static List messages = new();

static void Main(string[] args)
{
try
{
for (int i = 0; i < 1000000; i++)
{
Message message = new Message
{
Content = new Content
{
Data = "hgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;klshdghgsdjghdskjghdsjkhgkdjshgjksdhgsdkhga;fdsfdsfsdfdsfdsfdsfsdfdsdgsdgsdgdsgksdhglkdshglkjsdhglksdfsdfsdfsdfsfsdfdsdgsdgsdgdsgksdhglkdshglkjsdhglksdfsdfsdfsdfdsfsdfdsf"
}
};
messages.Add(message);
}

StreamWriter writer = new StreamWriter("PATH", append: true);

writer.WriteLine(DateTime.Now.ToString("hh:mm:ss:ffffff"));

var factory = new ConnectionFactory
{
HostName = "IP",
Port = 5672,
VirtualHost = "VH",
UserName = "UserName",
Password = "Password",
};

using var connection = factory.CreateConnection();
using var channel = connection.CreateModel();

channel.ConfirmSelect();

connection.ConnectionBlocked += (sender, args) =>
{
writer.WriteLine("Connection blocked due to flow control. Slowing down publishing... " + DateTime.Now.ToString("hh:mm:ss:ffffff"));
};

connection.ConnectionUnblocked += (sender, args) =>
{
writer.WriteLine("Connection unblocked. Resuming publishing... " + DateTime.Now.ToString("hh:mm:ss:ffffff"));
};
channel.BasicReturn += (sender, args) =>
{
writer.WriteLine("Message was returned by RabbitMQ: " + Encoding.UTF8.GetString(args.Body.ToArray()) + "\n" + DateTime.Now.ToString("hh:mm:ss:ffffff"));
};

channel.BasicAcks += (sender, eventArgs) =>
{
writer.WriteLine("Message successfully acknowledged by RabbitMQ. Delivery tag: " + eventArgs.DeliveryTag + "   " + DateTime.Now.ToString("hh: mm:ss: ffffff"));
};

channel.BasicNacks += (sender, eventArgs) =>
{
writer.WriteLine("Message NOT acknowledged by RabbitMQ.  Delivery tag: " + eventArgs.DeliveryTag + "   " + DateTime.Now.ToString("hh: mm:ss: ffffff"));
};
IBasicProperties properties = channel.CreateBasicProperties();
properties.Headers = new Dictionary
{
{ "UID", "00000000-0000-0000-0000-000000000000"},
{ "UserId", 6 },
{ "Serial", "A2AB19" },
{ "MemoryId", 1 },
{ "DeliveryMethod", 2 },
{ "IP", "::1" }
};

foreach (Message message in messages)
{
byte[] payload = Encoding.UTF8.GetBytes(message.Content.Data);
channel.BasicPublish("my_exchange", "my.routingkey.publish", mandatory: true, properties, payload);
}

writer.WriteLine(DateTime.Now.ToString("hh:mm:ss:ffffff"));
}
catch (Exception ex)
{
using (StreamWriter writer = new StreamWriter("PATH", append: true))
{
writer.WriteLine(ex.Message);
}
}
}
}
Кроме того, события BasicNacks, BasicReturn, ConnectionBlocked и ConnectionUnblocked вообще не вызываются.
Есть ли какие-либо другие события, которые мне следует использовать для получить эти пропущенные сообщения?
Может ли кто-нибудь помочь мне решить проблему?
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/790 ... itmq-queue
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему не все мои сообщения публикуются в очереди RabbitMQ?
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Невозможно получить сообщения очереди от RabbitMQ в проекте Spring
    Anonymous » » в форуме JAVA
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Невозможно получить сообщения очереди от RabbitMQ в проекте Spring
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Данные PHP CRUD не публикуются даже после успешного подключения к базе данных
    Anonymous » » в форуме Php
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Последовательные данные Arduino не публикуются правильно во внешнем интерфейсе Flask
    Anonymous » » в форуме Python
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»