Это число не фиксировано. Каждый раз я запускал приложение с миллионом сообщений, но ни одно из них не было прочитано в очереди.
Вот исходный код консольного приложения, которое я использовал для публикации своих сообщений:
Вот исходный код консольного приложения, которое я использовал для публикации своих сообщений:
Вот исходный код консольного приложения, которое я использовал для публикации своих сообщений:
р>
Код: Выделить всё
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);
}
}
}
}
Есть ли какие-либо другие события, которые мне следует использовать для получить эти пропущенные сообщения?
Может ли кто-нибудь помочь мне решить проблему?
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/790 ... itmq-queue