2013-10-08 5 views
7

Ich bin ein Neuling, der versucht, Header-Austausch in Java-Client zu implementieren. Ich bin mir bewusst, dass dies das "x-match" -Bindungsargument ist. Wenn das Argument "x-match" auf "any" gesetzt ist, ist nur ein übereinstimmender Header-Wert ausreichend. Wenn Sie "x-match" auf "all" setzen, müssen Sie alle Werte miteinander vergleichen. aber kann mir jemand einen Skelett-Code zum besseren Verständnis liefern.Wie implementiere ich Header Exchange in RabbitMQ mit Java?

Antwort

20

für die Verwendung eines Header austauschen Sie müssen nur Ihre Austausch erklären als Header Typ:

channel.exchangeDeclare("myExchange", "headers", true); 

Dann müssen Sie eine Warteschlange erklären, dass das endgültige Ziel der Nachrichten sein wird, bevor der Verbraucher sie verbraucht:

Jetzt müssen wir den Austausch an die Warteschlange binden, die eine Bindung deklariert. In dieser Deklaration legen Sie fest, welche Header Sie für das Weiterleiten von Nachrichten von Ihrem Exchange an Ihre Warteschlange verwenden möchten. Ein Beispiel könnte sein:

Dies wird die Bindung mit HeaderName # 1 und HeaderName # 2 erstellen Ich hoffe das hilft!

+0

danke! :), es ist jetzt klar. – user2857129

+0

Gute Erklärung der Exchange/Queue-Beziehung. Vielen Dank! – user1828780

0

Erste declare Austausch mit Header-Typ: -

channel.exchangeDeclare("Exchange_Header", "headers", true); 

Dann Queue erklären: -

channel.queueDeclare("Queue", true, false, false, null); 

Jetzt Header definieren und binden Sie es mit Queue: -

Map<String,Object> map = new HashMap<String,Object>(); 
    map.put("x-match","any"); 
    map.put("First","A"); 
    map.put("Fourth","D"); 

channel.queueBind("Queue", "Exchange_Header", ROUTING_KEY ,map); 

prüfen diese : - http://codedestine.com/rabbitmq-headers-exchange/

Verwandte Themen