2015-04-06 63 views
1

每一個:
我是新來的qpid和遇到一些問題。通過我創建的交換不能路由消息到隊列,如下所示:
第i個創建durbale隊列「測試隊列-1」中的qpid使用嚼食-config命令:qpid交換,隊列

qpid-config add queue test-queue-1 --durable 

下我創建了一個持久的直接交換「測試交換-1" 在qpid也使用qpid-config命令:

qpid-config add exchange direct test-exchange-1 --durable 

最後,在將它們綁定如下命令:

qpid-config bind test-exchange-1 test-queue-1 test-queue-1 

一切似乎都在qpid工具確定:

Object Summary: 
ID Created Destroyed Index 
======================================================================================== 
128 12:28:28 -   org.apache.qpid.broker:queue:qmfc-v2-hb-iZ23c6sri0pZ.12680.1 
129 12:28:28 -   org.apache.qpid.broker:queue:qmfc-v2-iZ23c6sri0pZ.12680.1 
130 12:28:28 -   org.apache.qpid.broker:queue:qmfc-v2-ui-iZ23c6sri0pZ.12680.1 
131 12:28:28 -   org.apache.qpid.broker:queue:reply-iZ23c6sri0pZ.12680.1 
132 12:24:17 -   org.apache.qpid.broker:queue:test-queue-1 
133 12:28:28 -   org.apache.qpid.broker:queue:topic-iZ23c6sri0pZ.12680.1 
116 12:27:20 - 

org.apache.qpid.broker:binding:org.apache.qpid.broker:exchange:test-exchange-1,org.apache.qpid.broker:queue:test-queue-1,test-queue-1 

現在我願意對它們進行測試,開始的recv /發送演示程序:

[[email protected] build]$ ./recv amqp://127.0.0.1/test-queue-1 

發消息:

[[email protected] build]$ ./send -a amqp://127.0.0.1/test-exchange-1 hi,everyone 

但「recv程序」無法收到任何消息。
如果我發短信是這樣的:

[[email protected] build]$ ./send -a amqp://127.0.0.1/test-queue-1 hi,everyone 

的「recv的程序」可以RECV消息:

Address: amqp://127.0.0.1/test-queue-1 
Subject: Hello Subject 
Content: "hi,everyone" 

誰可以告訴我爲什麼我讀了AMQP協議,也許路由鍵?在消息中不匹配綁定密鑰,但如果這樣,我怎麼能設置路由密鑰? 我的recv /發送由質子c,0.8版wrict。 qpidd是0.32版本。

回答

0

當您向qpid直接交換機發送消息時,它將根據消息的路由鍵被路由到綁定隊列。在質子-C您可以通過使用功能

PN_EXTERN int pn_message_set_subject (pn_message_t* msg,const char* subject) 

不幸的是,這是不是在例如send.c隨機附帶的質子-C V0.8您可以將實現設置消息學科設置路由關鍵以下行somewhere around here和重建send可執行

pn_message_set_subject(message, "my-routing-key"); 

您還可以與一些努力,添加一個新的命令行選項來接受和./send

Java示例使用路由鍵實現-s選項來設置消息主題。

0

我也認爲這是一個有約束力的問題。

嘗試用以下結合, qpid-配置綁定測試交換-1測試隊列-1測試交換-1

@Feng芳: 「測試交換-1」 是一個路由密鑰是您在發送消息時正在使用。如果沒有試用「test-exchange-1/test-exchange-1」

保持原樣並試一試。

我希望這有助於!