node.js - 未通过 Azure 服务总线队列接收消息
问题描述
我有一个 C# 程序将消息发送到 Azure 服务总线 Q(在 VM 上)。消息应该由 node.js 应用程序(在 Mac 上)接收。问题是接收。我看到的行为是:
- 如果我在 Q 中已有消息的新术语窗口中启动 node.js 应用程序,则在第一次调用时会收到它
- 保持 node.js 应用程序运行,下一条发布到 Q 的消息将在 1 分钟后收到
- 停止 node.js 应用程序并在同一个术语窗口中重新启动它并将另一条消息发布到 Q 永远不会收到
我知道 C# 程序正确发送消息,因为我在程序确认“发送”后立即使用服务总线资源管理器进行检查。当前正在同步模式下完成发送。
Node.js 程序:(使用最新的 azure 库和节点 8.9.4 运行)
logger.info("Connecting to service bus");
const sbService = azure.createServiceBusService(connectionString);
if (sbService != null) {
sbService.createQueueIfNotExists(queueName, function (err) {
if (err) {
logger.error("Cannot connect to "+queueName+" :: "+ util.inspect(err, { depth: null }));
} else {
logger.info("Connected to Q :: processing begins ");
var intervalID = setInterval(timerElapsed, 5000);
}
});
}
function timerElapsed() {
sbService.receiveQueueMessage(queueName, { isPeekLock: false }, function (err, lockedMessage) {
if (err) {
if (err !== 'No messages to receive') {
logger.error("receiveQueueMessage error states: "+ util.inspect(err, { depth: 2 }));
} else {
console.log('.');
}
} else {
logger.info("received Message: "+ util.inspect(lockedMessage, { depth: 2 }));
}
});
}
[编辑] - 有趣的是,我在这里使用了来自 MS Github 的示例github 示例,结果相似。
解决方案
< bangs head on table > 看看这篇帖子中的线索延迟使用python。罪魁祸首是默认开启的队列分区。关掉它,瞧……
推荐阅读
- node.js - 如果在 https 中,则无法使用 req.get('Referrer') 获取完整路径
- sql - 发现不良信用后退出所有交易
- linux - 循环遍历 Bash 中的一部分非顺序目录
- mysql - 如何使用 SQL 按字符串中给定字符的数量排序?
- c++ - 如何在 Microsoft Visual Studio 2017 或 2019 中启用或使用自动矢量化以及自动并行化?
- pandas - 如何将函数应用于熊猫数据的每两列并返回一个新的数据框
- python - 如何在PLT中保存图像
- python - TensorFlow 迁移学习加载 TFRecordDataset
- node.js - 如何重新打开nodejs服务器信息
- listview - 如何为ListView UWP中的每一行设置颜色差异指针