I want The consumer received only own massages with route key
this is my publisher:
public void SendOrder(CreateOnlineOrderCommand command)
{
var routingKey="test";
using var channel = _connection.CreateModel();
_model = _connection.CreateModel();
_model.ExchangeDeclare("Topic_Exchange", type: ExchangeType.Topic);
_model.QueueDeclare("OrderTopic_Queue", true, false, false, null);
_model.QueueBind("OrderTopic_Queue", "Topic_Exchange", $"{routingKey}.order");
SendMessage(command.Serialize(), $"{routingKey}.order");
}
and this is Sender Method:
public void SendMessage(byte[] message, string routingKey)
{
_model.BasicPublish(_exchangeName,
routingKey: routingKey,
basicProperties: null,
body: message);
}
this is My Consumer:
rabbitMqChannel = CreateConnection();
rabbitMqChannel.ExchangeDeclare(exchange: "Topic_Exchange", ExchangeType.Topic);
var queueName= rabbitMqChannel.QueueDeclare(queue: "OrderTopic_Queue",
durable: true,
exclusive: false,
autoDelete: false,
arguments: null);
rabbitMqChannel.QueueBind("OrderTopic_Queue", "Topic_Exchange", "test.order");
var consumer = new EventingBasicConsumer(rabbitMqChannel);
consumer.Received += (model, ea) =>
{
var body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
var routingKey = ea.RoutingKey;
};
rabbitMqChannel.BasicConsume(queue: "OrderTopic_Queue",
autoAck: setting.AutoAck,
consumer: consumer);
where is my fault , because this consumer ignore the routing key and consume all message exist in queue,i want consume only message with this routing key : "test.order"