2016-04-13 2 views
0

Wenn wir rabbitMQ Themenaustausch verwenden, können wir überall eine Nachricht senden. Und unser Projekt ist sehr groß, wenn ich eine Nachricht erhalte, und wir fanden heraus, dass ein Problem in der Nachricht vorliegt und wir die Nachricht an der Stelle ändern wollen, an die sie gesendet wurde. Aber es ist kaum zu finden, wo die Nachricht gesendet wurde.Woher weiß ich, woher eine Nachricht in rabbitMQ gesendet wird?

Gibt es in rabbitMQ eine Methode oder ein Befehlswerkzeug, um herauszufinden, von wo die Nachricht gesendet wurde.

Antwort

0

gibt es ein paar Informationen, dass Sie die envelop mit nehmen können, wie exchange, delivery_tag, routing_key:

Consumer consumer_a = new DefaultConsumer(channel) { 
      @Override 
      public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) 
        throws IOException { 
       String message = new String(body, "UTF-8"); 
       long delivery_tag = envelope.getDeliveryTag(); 
       String exchange_from = envelope.getExchange(); 
       String routing_key = envelope.getRoutingKey(); 

      } 
     }; 

, wenn Sie weitere Informationen benötigen, können Sie die headers verwenden, um benutzerdefinierte Informationen hinzuzufügen:

var properties = new BasicProperties(); 
    properties.Headers = new Dictionary<string, object>(); 
    properties.Headers.Add("mysender_user", "my_server"); 
    properties.Headers.Add("my_custom_info", "my_info"); 

    channel.BasicPublish(ExchangeName, "", properties, message);