我使用ampq.node來爲我的節點代碼中的RabbitMQ訪問。我試圖使用publish
或sendToQueue
方法,使用options
參數將我的發佈消息(即時間戳和內容類型)包含在一些元數據中。無法使用RabbitMQ消息發佈選項?
但無論我傳遞給options
是完全忽略。我認爲我錯過了一些格式或字段名稱,但我找不到任何可靠的文檔(超出了提供的here,似乎沒有做這項工作)。
下面是我publish
功能代碼:
var publish = function(queueName, message) {
let content;
let options = {
persistent: true,
noAck: false,
timestamp: Date.now(),
contentEncoding: 'utf-8'
};
if(typeof message === 'object') {
content = new Buffer(JSON.stringify(message));
options.contentType = 'application/json';
}
else if(typeof message === 'string') {
content = new Buffer(message);
options.contentType = 'text/plain';
}
else { //message is already a buffer?
content = message;
}
return Channel.sendToQueue(queueName, content, options); //Channel defined and opened elsewhere
};
我缺少什麼?
更新: 打開,如果你選擇使用ConfirmChannel
,你必須提供回調函數的最後一個參數,否則,選項對象被忽略。所以一旦我改變了代碼以下,我開始看到正確的選項:
感謝您的詳細回覆Derick。我使用確認頻道的事實是否會成爲問題? (是的,我從我的示例中刪除了回調代碼 - 認爲它會使它看起來更乾淨)。 –
老實說,從來沒有使用ConfirmChannel插件,所以我不知道這是否會導致這樣的事情。我不這麼認爲......但我不知道。 –