1

我正在尝试 Hello World AMQP 的 rabbitmq-c 实现。

我从 rabbitmq-c 源代码中包含的示例中采用了一个小脚本。这是一个片段:

  socket = amqp_tcp_socket_new(conn);
  if (!socket) {
    die("creating TCP socket");
  }

  status = amqp_socket_open(socket, hostname, port);
  if (status) {
        die(amqp_error_string2(status));
  }
  printf ("Error opening socket: %s\n",strerror(errno));

hostname如果我在与 rabbitmq 服务器进程(即is )相同的主机上运行它localhost,那么脚本会连接并发送一条由侦听器接收的消息。如果我在不同的机器上运行相同的程序并提供运行 Rabbit 的机器的主机名,那么当它尝试使用 -9 打开套接字时它会死掉,这只是“发生套接字错误”。“errno”正是EINPROGRESS我尝试打开非阻塞套接字时所期望的。(这与我在程序成功时看到的错误相同)。

失败时,rabbitmq 服务器日志中没有显示任何内容。

如果有人能具体告诉我这里出了什么问题,我会很高兴,但我真的需要一根钓鱼竿。我不知道如何从这里的系统中获取我需要的信息,甚至不知道从哪里开始。我以前从未真正做过unix I/O。任何人都可以就调试后续步骤提出一些建议吗?

4

1 回答 1

1

我真的无法就下一步寻找什么提供任何直接建议……但从你的描述来看,听起来托管 rabbitmq 的机器不允许正确的 TCP/IP 端口进行通信。

几个月前,我在 RedHat Linux 上安装 RabbitMQ 时遇到了这个问题。我必须在防火墙和安全设置中配置各种安全selinux设置以允许正确的端口

于 2015-07-29T22:25:14.120 回答