问题描述
我在功能应用程序中创建了2个功能
- 功能1将消息添加到服务总线队列(队列名称-TestQueue)
- 只要服务总线队列中有消息(队列名称-TestQueue),就会触发功能2,并将接收到的消息添加到mongo DB表中。
功能1成功将5K消息添加到队列中,并且队列中还显示了已接收和发送的5K消息。但是功能2仅执行了3964次,我也只看到mongo DB表中的许多条目。
功能代码1
const { ServiceBusClient } = require("@azure/service-bus");
const {MongoClient} = require('mongodb');
const uri = "mongodb://XXXXXXXXX:27017";
// Define connection string and related Service Bus entity names here
const connectionString = "Endpoint=sb://XXXX";
const queueName = "XXXX";
module.exports = async function(context,mySbMsg) {
context.log('JavaScript ServiceBus queue trigger function processed message',mySbMsg);
const sbClient = ServiceBusClient.createFromConnectionString(connectionString);
const queueClient = sbClient.createQueueClient(queueName);
const sender = queueClient.createSender();
try {
var client = await MongoClient.connect(uri,{ useUnifiedTopology: true });
var db = client.db("test_users");
var response = await db.collection("users").find({"batch_id":mySbMsg}).toArray();
for (let i = 0; i < response.length; i++) {
const message= {
body: response[i].email
};
context.log(`Sending message: ${response[i].email} Timestamp: ${new Date()}`);
await sender.send(message);
}
await client.close();
await queueClient.close();
}
catch(e)
{
context.log(e);
}
finally
{
await sbClient.close();
}
};
功能代码2
const {MongoClient} = require('mongodb');
const uri = "mongodb://XXXXXX:27017";
module.exports = async function(context,mySbMsg) {
try
{
context.log(mySbMsg);
context.log(JSON.stringify(mySbMsg));
var client = await MongoClient.connect(uri,{ useUnifiedTopology: true });
var db = client.db("test_users");
var message = {
"email": mySbMsg,"created_at": new Date(),"updated_at": new Date()
};
var response_of_adding = await db.collection("users_emails").insertOne(message);
await client.close();
context.log(response_of_adding);
context.log('JavaScript ServiceBus queue trigger function processed message',mySbMsg);
context.log('Node.js ServiceBus queue trigger function processed message',mySbMsg);
context.log('EnqueuedTimeUtc =',context.bindingData.enqueuedTimeUtc);
context.log('DeliveryCount =',context.bindingData.deliveryCount);
context.log('MessageId =',context.bindingData.messageId);
context.done();
}
catch(e)
{
context.log(e);
}
};
我无法理解其原因。任何帮助将不胜感激。
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)