我在Azure中有一个服务总线队列和一个服务总线队列触发器功能。当我第一次发布该函数并向服务总线队列发送消息时,该函数被触发并运行正常。
但是,如果我不管它并且不发送任何消息到队列说~1小时然后我发送消息该功能不会被触发。我必须通过按“运行”在门户中再次手动运行该功能,或者我必须将其重新发布到Azure。
如何让它继续运行,所以我不必每小时左右重启一次? 我的应用可能不会在几小时甚至几天内向队列发送新消息。
仅供参考 - 我读了here该功能在5分钟后关闭,如果是这种情况我不能使用功能而且我不想使用定时器触发因为那时我会运行我想要的功能更多,浪费金钱!对? 如果我唯一的,最好的选择是在一天中每隔30分钟运行一次计时器功能,我可能只需要这样做就行了,但我更喜欢在消息点击消息时运行该功能队列中。
FYI2 - 最终我想要隐藏消息直到特定日期,当我第一次将其推送到队列时(例如,设置为从放入队列的1周后显示)。我想要完成什么?我想在课程结束后向注册学生发送电子邮件,课程可能会提前1-30天安排。因此,当课程安排完成后,我不希望该功能在课程结束后运行,这可能是在我的应用程序中最初安排课程后的1周,2周2天,3周3天等。
以下是function.json
的片段{
"generatedBy": "Microsoft.NET.Sdk.Functions-1.0.0.0",
"configurationSource": "attributes",
"bindings": [
{
"type": "serviceBusTrigger",
"connection": "Yogabandy2017_RootManageSharedAccessKey_SERVICEBUS",
"queueName": "yogabandy2017",
"accessRights": "listen",
"name": "myQueueItem"
}
],
"disabled": false,
"scriptFile": "..\\bin\\PostEventEmailFunction.dll",
"entryPoint": "PostEventEmailFunction.Function1.Run"
}
这是函数
public static class Function1
{
[FunctionName("Function1")]
public static void Run([ServiceBusTrigger("yogabandy2017", AccessRights.Listen, Connection = "Yogabandy2017_RootManageSharedAccessKey_SERVICEBUS")]string myQueueItem, TraceWriter log)
{
log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
}
}
我被要求发布我的付款计划
答案 0 :(得分:2)
我怀疑你正在使用下面的方案1和2 - 在没有活动一段时间后会关闭。
答案 1 :(得分:1)
请检查您的服务计划 1.平台功能 2.应用服务计划 3.在定价层
下请为您提供应用名称。