我正在使用最新的可用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分区实体 –