6

RabbitMQ に依存する Node.js アプリケーションを作成しています。RabbitMQ に接続するためのライブラリとして node-amqp を使用しています。

RabbitMQ への接続を確立したら、まず交換を作成します。

var options = { autoDelete: false, confirm: true, durable: true, type: 'direct' };
connection.exchange('myExchange', options, function (myExchange) {
  // ...
});

これは完全に機能します。ご覧のとおり、 を使用して交換を作成しているconfirm: trueため、後で交換が確認モードになることを期待しています。

メッセージを公開しようとすると、問題が発生します。

var options = {};
myExchange.publish('', { data: 'foobar' }, options, function () {
  // ...
});

問題は、publish関数のコールバックが呼び出されないことです-メッセージは正常に発行されましたが (RabbitMQ の Web 管理ツール内で確認できます)。

確認モードを間違った方法で理解しましたか? これは node-amqp のバグですか?

どんな助けでも大歓迎です:-)

4

1 に答える 1

11

適切なGitHubの問題で回答された質問: npm の node-amqp は古いバージョンです ... 現在の回避策はmaster、GitHub のブランチを直接使用することです。

これは、を使用https://github.com/postwait/node-amqp/tarball/masterしてインストールするときに使用することを意味しnpmます。


2013 年 11 月の更新

最近 (最初の質問から約 1 年後)、RabbitMQ を再び使用していたので、node-amqp の現状について最新情報を提供することをお勧めします。

残念ながら、node-amqp の状態は 1 年前とまったく同じです。npm から公開されたバージョンはほとんど使用できません。1 年前に遭遇したバグの一部がまだ残っているため (私の質問のバグを含む)、指定された回避策は引き続き有効です: GitHub から最新のマスターを入手してください。

于 2012-10-04T18:15:46.573 に答える