我有一个我创建的Web作业,我想部署到azure.但是在创建它时我对配置感到困惑.
这是一个从天蓝色存储队列触发的Web作业.它在当地工作正常.
然而,当我在azure中创建web作业时,我对选择感到困惑......我的选择是触发或连续.
如果我选择连续,我会选择单个或多个.
如果我选择Triggered,我可以选择Scheduled或Manual.我不想要一个预定的,我不确定手册是什么意思......这似乎也不是正确的.
我知道从azure队列触发的web作业实际上是"轮询"而不是触发...因此看起来连续是正确的选择.但我不确定.
所以问题是......在创建从Azure队列触发的Web作业时,正确的部署配置是什么?
我想将Azure Queues用作高负载/高规模Web服务的状态机.
客户端将向Web服务端点提交请求,此时我将返回请求ID.
然后,我将消息提交到队列,以便工作者角色可以处理它,但在提交过程中不会发生数据库活动.相反,我想使用消息所在的队列来表示它的当前状态.
我的问题是,如果一个辅助角色从队列中抓取消息来处理它,它就会在该队列上变得不可见.如果我想检查该消息的处理状态,我的消息状态不明确.消息丢失/从未收到,或者它在队列中但是因为正在处理而不可见.
理想情况下,我希望能够在隐形信息中达到顶峰.如果我找到一个与请求ID匹配的,我知道它正在被处理,如果它是不可见的,或者它正在等待处理,如果它是可见的.显然,我知道它何时完成处理,因为该操作将导致数据库写入.
这是可能的,或者是我无法查看Azure队列中的不可见消息,这是不是?
我知道Azure Queue不是严格的FIFO.
Visual Studio Server Explorer仅显示32条消息.我队列中有88条消息.
是否可以查看Azure队列中的所有消息而不解除任何消息?
我正在尝试使用队列触发器创建一个函数,这是function.json
:
"scriptFile": "__init__.py",
"bindings": [
{
"name": "CraigslistItemParser",
"type": "queueTrigger",
"direction": "in",
"queueName": "craigslist",
"connection": "DefaultEndpointsProtocol=https;AccountName=NAME;AccountKey=KEY;EndpointSuffix=core.windows.net"
}
]
}
Run Code Online (Sandbox Code Playgroud)
在控制台日志中部署该函数时,出现错误:
The 'CraigslistItemParser' function is in error: Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.CraigslistItemParser'. Microsoft.Azure.WebJobs.Extensions.Storage: Storage account connection string 'DefaultEndpointsProtocol=https;AccountName=NAME;AccountKey=KEY;EndpointSuffix=core.windows.net' does not exist. Make sure that it is a defined App Setting.
Run Code Online (Sandbox Code Playgroud)
什么是应用程序设置,我在任何地方都找不到它们?