2013-10-08 36 views
7

我是一個嘗試在java客戶端實現Headers交換的新手。我知道這是「x-match」綁定參數的用途。當「x-match」參數設置爲「any」時,只有一個匹配的標題值就足夠了。或者,將「x-match」設置爲「all」則強制所有值必須匹配。 但任何人都可以爲我提供一個框架代碼,以便更好地理解。如何使用Java在RabbitMQ中實現標題交換?

回答

20

對於使用頭文件交換,你只需要聲明你交換爲標題鍵入:

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

然後,你需要聲明一個隊列,這將是該消息的最終目的地的消費者消費之前:

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

現在我們需要將交換綁定到隊列來聲明綁定。在這個聲明中,您設置了將您的交換消息路由到隊列的標題。一個示例可能是:

Map<String, Object> bindingArgs = new HashMap<String, Object>(); 
bindingArgs.put("x-match", "any"); //any or all 
bindingArgs.put("headerName#1", "headerValue#1"); 
bindingArgs.put("headerName#2", "headerValue#2"); 

... 
channel.queueBind("myQueue", "myExchange", "", bindingArgs); 
... 

這將使用headerName#1和headerName#2創建綁定。我希望這有幫助!

+0

thanx!:),現在清楚了。 – user2857129

+0

交換/隊列關係的好解釋。謝謝! – user1828780

0

帶有頭部的類型首先聲明交換: -

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

然後聲明隊列: -

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

現在定義首部,並與隊列結合它: -

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); 

檢查這: - http://codedestine.com/rabbitmq-headers-exchange/