RabbitMq Multiple Consumers in .Net

Viewed 30

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"

0 Answers
Related