2015-12-01 45 views
0

我有一個STOMP客戶端在Node.js中運行,訂閱了ActiveMQ中的一個隊列。當使用捲曲,我可以發佈消息隊列使用下面的命令(其立即被STOMP客戶端我在節點上運行消耗):如何使用Node.js使用其REST接口將消息發佈到ActiveMQ?

curl -d "body=message" http://sub.dummyhost.net:8161/demo/message/dispatch?type=queue 

我試圖重現使用節點這個POST請求。使用以下代碼的js的請求模塊(https://github.com/request/request),其附着於我們應該如何發送POST請求與應用程序/ x-WWW窗體-urlencoded數據:

request.post({ 
     url: 'http://sub.dummyhost.net:8161/demo/message/dispatch?type=queue', 
     form: { 
      body:'message' 
     } 
    }, 
    function(err, response, body){ 
     //do something with response 
    }); 

在響應的報頭屬性,我可以看到message-id屬性,每當我使用上面的函數調用進行POST請求時,該屬性就會增加。然而,當我檢查代理本身的管理視圖時,我沒有看到入隊和出隊消息增量(和我的STOMP消費者沒有收到任何東西,不像使用cURL發出POST請求時)。這些消息根本不會被髮布到隊列中。

缺少什麼我在這裏?

回答

1

無論出於何種原因,ActiveMQ的沒當我用request.post與選擇格式化這樣喜歡它。當我通過在URL作爲第一個選項,它似乎很好地工作:

var promisifiedPostRequest = Promise.promisify(request.post); 
    return promisifiedPostRequest(
    'http://localhost:8080/demo/message/queue1?type=queue', 
    { 
     form : { 
     body: JSON.stringify(notification), 
     AMQ_SCHEDULED_DELAY : delay 
    } 
    }) 
    .then(function(response){ 
    return response.headers.messageid; 
    }); 

我寫了一篇關於REST,Node.js和受這裏的ActiveMQ博客文章:https://medium.com/@mackplevine/using-activemq-with-node-js-stomp-and-http-b251ce8d995#.4qf53glie

0
var options = { method: 'POST', 
    url: 'http://sub.dummyhost.net:8161/demo/message/dispatch?type=queue', 
    headers: 
    { 'cache-control': 'no-cache', 
    'content-type': 'multipart/form-data' }, 
    form: { body: 'message' } }; 

request(options, function (error, response, body) { 
    if (error) throw new Error(error); 

    console.log(body); 
}); 

試試這個〜

相關問題