我正在使用最新的可用npm包 - 0.10.6(https://www.npmjs.com/package/azure)試驗Azure Node.js SDK和服務總線主題。 我要發佈一個新的消息,並使用下面的代碼獲得它:Azure服務總線主題 - 使用Node.js SDK接收消息時的延遲
var azure = require('azure');
var connectionString = "Endpoint=sb://sfbustest.servicebus.windows.net/;SharedAccessKeyName={key-name};SharedAccessKey={access-key}";
var topicName = "{topic-name}";
var subscriptionName = "{subscription-name}";
var serviceBusService = azure.createServiceBusService(connectionString);
serviceBusService.getSubscription(topicName, subscriptionName, function(error, subscription){
//if(error) return callback(error);
if(!subscription){
serviceBusService.createSubscription(topicName, subscriptionName, function (error) {
if (error) throw error;
postMessage_retreiveMessage(null);
});
} else {
postMessage_retreiveMessage(null);
}
});
//postMessage_retreiveMessage();
function postMessage_retreiveMessage(){
var topicMsg = {
body: new Date().toISOString()
};
serviceBusService.sendTopicMessage(topicName, topicMsg, function (error) {
if(error) throw error;
console.log("message sent: ");
console.log(topicMsg);
var receiveOptions = { /* isPeekLock: true, */ timeoutIntervalInS: 30 };
serviceBusService.receiveSubscriptionMessage(topicName, subscriptionName, receiveOptions, function(error, receivedMessage){
if(error) throw error;
console.log("message received: ");
console.log(receivedMessage);
});
});
}
的問題: 當創建主題和分區是使 - 這是默認的,如果是通過管理創造了一個話題門戶 - 在那種情況下,我最終收到消息之前經歷了巨大的延遲。
雖然這種行爲不能與.NET SDK重現。
此外,如果分區關閉那麼我不會再經歷任何重大延遲,並且行爲也不再可重現。
展望Azure的SDK進行的Node.js我注意到下面的終點進行呼叫(被調用時receiveSubscriptionMessage):
https://sfbustest.servicebus.windows.net:443/{topic-name}/Subscriptions/{subscription-name}/Messages/Head?timeout=30&api-version=2013-10.
它的文檔可以在這裏找到:https://msdn.microsoft.com/en-us/library/azure/hh780770.aspx。 在文檔的介紹部分中,聲明HTTP API支持分區實體:https://msdn.microsoft.com/en-us/library/azure/dn798895.aspx。
如果我手動調用該端點,例如Fiddler,我也會觀察所描述的延遲。
如果有人能幫助我理解是什麼導致了這種行爲,我將非常感激。 預先感謝您。
僅供參考,你就會有一個更好的體驗閱讀Azure.com而不是GitHub上的文檔:https://azure.microsoft.com/documentation/articles/service-bus-partitioning/#use-sessions -with分區實體 –