【发布时间】:2015-09-02 01:03:19
【问题描述】:
我是 AMQP 的新手,正在尝试编写一个简单的应用程序,该应用程序使用 Qpid Proton Messenger API 写入 Qpid Java Broker。开箱即用的 Qpid Java 代理有四个默认交换器(amq.match、amq.fanout、amq.topic、amq.direct),端口 5672 上的 AMQP“端口”和 passwordFile auth povider。为了保证本次测试的安全性,我将身份验证提供程序更改为匿名。
为了写信给经纪人,我正在关注this 示例。该示例没有显示如何写入特定的交换或队列,我认为我的问题出在该域的某个地方。这是我的瘦身版。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <Windows.h>
#include "proton\message.h"
#include "proton\messenger.h"
int main(int argc, const char* argv[])
{
while (true)
{
pn_message_t * message;
pn_messenger_t * messenger;
pn_data_t * body;
message = pn_message();
messenger = pn_messenger(NULL);
pn_messenger_start(messenger);
printf("set address result: %i\n", pn_message_set_address(message, "amqp://xxx.xxx.xxx.xxx:5672"));
body = pn_message_body(message);
char* msgtext = "howdy";
pn_data_put_string(body, pn_bytes(strlen(msgtext), msgtext));
pn_messenger_put(messenger, message);
printf("\nSent: %i\n", pn_messenger_send(messenger, 1));
pn_messenger_stop(messenger);
pn_messenger_free(messenger);
pn_message_free(message);
Sleep(10);
}
}
pn_messenger_send 返回 0(成功)。从客户端机器我可以看到客户端正在通过网络发送消息。但是,在代理管理门户中,它显示零客户端连接,默认虚拟主机显示 0 msg/s (0.00 B/s) 入站。我希望这能显示来自我的测试客户端的字节。如果我在代理关闭的情况下运行客户端或将其指向错误的端口,客户端将在 pn_messenger_send 调用上失败,所以我知道我至少在与代理交谈。
我的问题是这些消息要去哪里?如何在消息的连接字符串中定义交换类型和队列?我已经搜索和搜索,但没有找到任何东西。欢迎任何我可能错过的文档或教程的链接。
这里有一些代理配置截图供参考。
谢谢!
【问题讨论】:
-
我从未使用过 HTTP webadmin 控制台。它多久刷新一次?数据是实时显示的吗?您能否尝试在命令行上使用
qpid-stat查找相同的交换/数据直通信息?你的 qpid 是在 linux 上运行的吗?