每个人:
我是新来的qpid遇到了一些问题。我创建的exchange无法将消息路由到队列,如下所示:
首先,我使用quid config命令在qpid中创建durble队列“test-queue-1”:

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

接下来,我将在qpid中创建一个持久的直接交换“test-exchange-1”,并使用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/send demo程序:
[devel@iZ23c6sri0pZ build]$ ./recv amqp://127.0.0.1/test-queue-1

发送消息:
[devel@iZ23c6sri0pZ build]$ ./send -a amqp://127.0.0.1/test-exchange-1 hi,everyone

但是“recv程序”不能接收任何消息。
如果我发送这样的消息:
[devel@iZ23c6sri0pZ build]$ ./send -a amqp://127.0.0.1/test-queue-1 hi,everyone

“recv程序”可以接收消息:
Address: amqp://127.0.0.1/test-queue-1
Subject: Hello Subject
Content: "hi,everyone"

谁能告诉我为什么?我阅读了amqp协议,可能消息中的路由密钥与绑定密钥不匹配,但是如果这样,我如何设置路由密钥?
我的记录/发送由proton-c编写,版本0.8。qpidd是0.32版本。

最佳答案

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

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

不幸的是,这并没有在proton-c v0.8附带的示例send.c中实现,您可以插入下面的行somewhere around here并重建您的send可执行文件
pn_message_set_subject(message, "my-routing-key");

您还可以通过一些努力,添加一个新的命令行选项来接受并使用./send中的路由密钥
java示例实现了一个-s选项来设置消息主题。

关于c - 关于qpid交换,队列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29471907/

10-12 16:01