1

AMQP の rabbitmq-c 実装を Hello World しようとしています。

私は、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));

これを rabbitmq サーバー プロセス (つまりhostnameis 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 に答える