我是AMQP/RabbitMQ新手,和相關的Node.js新手。我可以使用amqplib NPM庫客戶端嗎?我可以在瀏覽器中使用amqplib嗎?
我希望能夠從我的Angular應用程序直接將消息推送到RabbitMQ。我用Browserify模塊化了很多客戶端代碼。我現在開始嘗試使用RabbitMQ,並希望通過amqp協議將消息直接從瀏覽器推送到基於雲的隊列。
我已經通過NPM安裝amqplib並寫入/粘貼以下模塊:
var amqp = require('amqplib/callback_api');
var push = function(){
console.log('This is the CORE queue.pusher push function being triggered');
var connString = 'amqp://username:[email protected]/username';
amqp.connect(connString, function(err, conn) {
if (err){
console.log("core queue.pusher push error %s", err);
}else {
conn.createChannel(function (err, ch) {
var q = 'FatController';
var msg = 'Hello World!';
ch.assertQueue(q, {durable: false});
// Note: on Node 6 Buffer.from(msg) should be used
ch.sendToQueue(q, new Buffer(msg));
console.log(" [x] Sent %s", msg);
});
setTimeout(function() {
conn.close();
process.exit(0)
}, 500);
}
});
};
module.exports = {push:push};
當我嘗試運行此我得到以下錯誤:
bundle.js:32074 TypeError: QS.unescape is not a function
at openFrames (bundle.js:9551)
at connect (bundle.js:9629)
at Object.connect (bundle.js:7959)
at Object.push (bundle.js:7652)
at controller.pushQueueEntry (bundle.js:7805)
at fn (eval at compile (bundle.js:32907), <anonymous>:4:184)
at callback (bundle.js:44543)
at Scope.$eval (bundle.js:35710)
at Scope.$apply (bundle.js:35810)
at HTMLInputElement.<anonymous> (bundle.js:44548)
at defaultHandlerWrapper (bundle.js:21283)
at HTMLInputElement.eventHandler (bundle.js:21271)
我是不是找錯了樹這裏? amqplib只能運行在「正確的」節點環境中嗎?
作爲第二個問題,確定某個特定的NPM軟件包是否可以在瀏覽器環境中運行的最佳方法是什麼?在我看來,一些NPM包將在瀏覽器中運行,有些則不會 - 對此有信心的最佳方式是什麼?
非常有幫助和全面的答案羅伯特,非常感謝:) – Journeyman