首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于qpid交换,队列

关于qpid交换,队列
EN

Stack Overflow用户
提问于 2015-04-06 13:04:45
回答 2查看 1.1K关注 0票数 1

每个人:

我对qpid很陌生,遇到了一些问题。我创建的交换不能将消息路由到队列,如下所示:

首先,我使用quid-config命令在qpid中创建了一个durbale队列“test- queue -1”:

代码语言:javascript
复制
qpid-config add queue test-queue-1 --durable  

接下来,我在qpid中创建一个持久的直接交换“test- exchange -1”,还使用qpid-config命令:

代码语言:javascript
复制
qpid-config add exchange direct test-exchange-1 --durable

最后,按以下命令绑定它们:

代码语言:javascript
复制
qpid-config bind test-exchange-1 test-queue-1 test-queue-1

在qpid工具中,一切看起来都很好:

代码语言:javascript
复制
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  -   

代码语言:javascript
复制
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/send演示程序:

代码语言:javascript
复制
[devel@iZ23c6sri0pZ build]$ ./recv amqp://127.0.0.1/test-queue-1

发送信息:

代码语言:javascript
复制
[devel@iZ23c6sri0pZ build]$ ./send -a amqp://127.0.0.1/test-exchange-1 hi,everyone

但是"recv程序“不能记录任何消息。

如果我像这样发送信息:

代码语言:javascript
复制
[devel@iZ23c6sri0pZ build]$ ./send -a amqp://127.0.0.1/test-queue-1 hi,everyone

“recv程序”可以记录消息:

代码语言:javascript
复制
Address: amqp://127.0.0.1/test-queue-1
Subject: Hello Subject
Content: "hi,everyone"

谁能告诉我为什么?我读了amqp协议,也许消息中的路由密钥与绑定密钥不匹配,但是如果这样,我如何设置路由密钥?我的简历/发送由质子-c,版本0.8。qpidd为0.32版本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-22 03:13:28

当您向qpid直接交换发送消息时,它将根据消息的路由密钥被路由到绑定队列。在质子-c中,可以通过使用函数设置消息主题来设置路由密钥。

代码语言:javascript
复制
PN_EXTERN int pn_message_set_subject (pn_message_t* msg,const char* subject)

不幸的是,在质子-c v0.8附带的示例send.c中没有实现这一点,您可以插入以下行在这附近的某个地方并重新构建send可执行文件

代码语言:javascript
复制
pn_message_set_subject(message, "my-routing-key");

您也可以通过一些努力,添加一个新的命令行选项来接受并使用来自./send的路由密钥。

java示例实现了一个-s选项来设置消息主题。

票数 0
EN

Stack Overflow用户

发布于 2016-01-24 05:37:02

我也认为这是个有约束力的问题。

尝试以下绑定,qpid绑定测试-exchange-1测试队列-1测试-交换-1

@冯芳:“测试-交换-1”是一个路由密钥,是您在发送消息时使用的。如果没有尝试使用"test-exchange-1/test-exchange-1“

好好休息,试一试。

我希望这能帮到你!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29471907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档