Вы можете установить пользовательские заголовки для каждого сообщения следующим образом:
Издатель:
byte[] messageBodyBytes = System.Text.Encoding.UTF8.GetBytes("Hello, world!");
IBasicProperties props = model.CreateBasicProperties();
props.ContentType = "text/plain";
props.DeliveryMode = 2;
props.Headers = new Dictionary<string, object>();
props.Headers.Add("header", value);
model.BasicPublish(exchangeName,
routingKey, props,
messageBodyBytes);
Ссылка: https://www.rabbitmq.com/dotnet-api-guide.html#publishing
У потребителя у вас есть доступ к BasicProperties
.
Потребитель:
public override void HandleBasicDeliver(string consumerTag, ulong deliveryTag, bool redelivered, string exchange, string routingKey, IBasicProperties properties, byte[] body)
{
header_value = // Read the value from the properites variable
if (header_value matches) {
// Reject or delete the message
_channel.BasicReject(deliveryTag, false);
}
else {
// Accept the message and do your processing
_channel.BasicAck(deliveryTag, false);
}
}
Ссылка: https://www.tutlane.com/tutorial/rabbitmq/csharp-read-messages-from-rabbitmq-queue
Я использую RabbitMQ
с pika
, который является python
клиентом. Я не очень хорошо владею C#
или .NET
, но надеюсь, это поможет!