ID: S202606091026
Status: imported
Tags: avans 2-4 LU1
2026-05-19 rabbitmq example
- Tool: Claude AI
- Gebruiker:
Situatie
Ik moest RabbitMQ gaan initialiseren in de code. Maar had niet genoeg tijd om het grondig te researchen omdat we al lichtelijk achter lopen.
Gebruikt
Prompt 1
now show me some example rabbitMQ c# connection logic (using the RabbitMQ.Client v7.2.1)
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
// Create a connection factory and configure it
var factory = new ConnectionFactory()
{
HostName = "localhost",
UserName = "guest",
Password = "guest",
VirtualHost = "/",
// Optional: provide a client-provided connection name
ClientProvidedName = "my-app:consumer"
};
// Enable automatic recovery from network failures
factory.AutomaticRecoveryEnabled = true;
factory.NetworkRecoveryInterval = TimeSpan.FromSeconds(10);
try
{
// Open a connection
IConnection connection = await factory.CreateConnectionAsync();
// Create a channel
IChannel channel = await connection.CreateChannelAsync();
// Declare an exchange
await channel.ExchangeDeclareAsync(
exchange: "my-exchange",
type: ExchangeType.Direct
);
// Declare a queue
await channel.QueueDeclareAsync(
queue: "my-queue",
durable: false,
exclusive: false,
autoDelete: false
);
// Bind the queue to the exchange
await channel.QueueBindAsync(
queue: "my-queue",
exchange: "my-exchange",
routingKey: "my.routing.key"
);
// Create a consumer
var consumer = new AsyncEventingBasicConsumer(channel);
consumer.ReceivedAsync += async (ch, ea) =>
{
var body = ea.Body.ToArray();
var message = System.Text.Encoding.UTF8.GetString(body);
Console.WriteLine($"Received message: {message}");
// Acknowledge the message
await channel.BasicAckAsync(ea.DeliveryTag, false);
};
// Start consuming
string consumerTag = await channel.BasicConsumeAsync(
queue: "my-queue",
autoAck: false,
consumer: consumer
);
Console.WriteLine("Consumer started. Press [Enter] to exit.");
Console.ReadLine();
// Cleanup
await channel.BasicCancelAsync(consumerTag);
await channel.CloseAsync();
await connection.CloseAsync();
await channel.DisposeAsync();
await connection.DisposeAsync();
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}Key points:
QueueDeclare()ensures the queue existsEventingBasicConsumerhandles incoming messages asynchronouslyBasicAck()confirms message processing (removes from queue)- Set
autoAck: falseso you manually acknowledge after processing
Resultaat
Ik heb dit resultaat overgenomen, om het daarna direct te kunnen aanpassen om het op een spelende wijs te leren hoe het precies werkt, want dit is voor mij een efficiente manier om het te leren.
Verbeterpunten
Ik had ook gewoon deze pagina kunnen lezen, de officiele rabbitMQ C# plugin documentatie. Dit had mogelijke fouten kunnen voorkomen, maar gelukkig zat er in deze template geen fout (of heb ik die nooit encountered)