Azure 函数不触发
Azure Function Not Triggering
我无法通过 ServiceBusQueueTrigger 触发 azure 函数。
这是我的:
Azure 函数:
namespace FunctionApp1
{
public static class Function1
{
[FunctionName("Function1")]
public static void Run([ServiceBusTrigger("ngctestqueue", AccessRights.Manage, Connection = "AzureWebJobsServiceBus")]string myQueueItem, TraceWriter log)
{
log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
}
}
}
host.json
{
}
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=ngctest2;AccountKey=STORAGE_ACCOUNT_KEY;EndpointSuffix=core.windows.net",
"AzureWebJobsDashboard": "DefaultEndpointsProtocol=https;AccountName=ngctest2;AccountKey=STORAGE_ACCOUNT_KEY;EndpointSuffix=core.windows.net",
"AzureWebJobsServiceBus": "Endpoint=sb://ngcservicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SERVICE_BUS_KEY",
"connection": "Endpoint=sb://ngcservicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SERVICE_BUS_KEY"
}
}
当我在本地通过 F5 运行 函数时,即使队列中有尚未处理的消息,它也不会被触发。:
%%%%%%
%%%%%%
@ %%%%%% @
@@ %%%%%% @@
@@@ %%%%%%%%%%% @@@
@@ %%%%%%%%%% @@
@@ %%%% @@
@@ %%% @@
@@ %% @@
%%
%
[10/11/2017 4:51:13 PM] Host has been specialized
Listening on http://localhost:7071/
Hit CTRL-C to exit...
[10/11/2017 4:51:13 PM] Reading host configuration file 'C:\Users\User1\source\r
epos\FunctionApp1\FunctionApp1\bin\Debug\net461\host.json'
[10/11/2017 4:51:13 PM] Host configuration file read:
[10/11/2017 4:51:13 PM] {
[10/11/2017 4:51:13 PM]
[10/11/2017 4:51:13 PM] }
[10/11/2017 4:51:14 PM] Loaded custom extension 'BotFrameworkConfiguration'
[10/11/2017 4:51:14 PM] Loaded custom extension 'SendGridConfiguration'
[10/11/2017 4:51:14 PM] Loaded custom extension 'EventGridExtensionConfig'
[10/11/2017 4:51:14 PM] Generating 1 job function(s)
[10/11/2017 4:51:14 PM] Starting Host (HostId=intelpc-1600078640, Version=1.0.11
232.0, ProcessId=27016, Debug=False, Attempt=0)
[10/11/2017 4:51:14 PM] Found the following functions:
[10/11/2017 4:51:14 PM] FunctionApp1.Function1.Run
[10/11/2017 4:51:14 PM]
[10/11/2017 4:51:14 PM] Executing HTTP request: {
[10/11/2017 4:51:14 PM] "requestId": "755084c1-3501-4e99-8629-8a9a48a60776",
[10/11/2017 4:51:14 PM] "method": "GET",
[10/11/2017 4:51:14 PM] "uri": "/"
[10/11/2017 4:51:14 PM] }
[10/11/2017 4:51:14 PM] Executed HTTP request: {
[10/11/2017 4:51:14 PM] "requestId": "755084c1-3501-4e99-8629-8a9a48a60776",
[10/11/2017 4:51:14 PM] "method": "GET",
[10/11/2017 4:51:14 PM] "uri": "/",
[10/11/2017 4:51:14 PM] "authorizationLevel": "Anonymous"
[10/11/2017 4:51:14 PM] }
[10/11/2017 4:51:14 PM] Response details: {
[10/11/2017 4:51:14 PM] "requestId": "755084c1-3501-4e99-8629-8a9a48a60776",
[10/11/2017 4:51:14 PM] "status": "OK"
[10/11/2017 4:51:14 PM] }
[10/11/2017 4:51:14 PM] Host lock lease acquired by instance ID '000000000000000
00000000017FED4C5'.
Debugger listening on [::]:5858
[10/11/2017 4:51:16 PM] Job host started
问题:我做错了什么,为什么不触发处理队列中的消息?
我的开发环境如下:
1) Windows 8.1 专业版
2) VS2017 社区 15.3.5
3) Azure 函数 CLI 1.0.4
附加信息
在门户中显示我的队列没有消息,但在 Cloud Explorer 中显示它们。这怎么可能?
非常感谢任何帮助。
谢谢。
Cloud Explorer 显示 Azure 存储队列,而不是服务总线队列。这些是不同的东西。
看起来您在两个服务中都有同名队列。请对齐绑定和您希望消息所在的位置。
要添加到@Mikhail 的评论中,您在 Azure 存储队列中有消息,但是,您有一个正在查看服务总线队列的 Azure 函数。
选项:
- 更改触发器以使用存储队列触发器并提供到它的连接。
- 将消息写入服务总线队列而不是存储队列
我无法通过 ServiceBusQueueTrigger 触发 azure 函数。
这是我的:
Azure 函数:
namespace FunctionApp1
{
public static class Function1
{
[FunctionName("Function1")]
public static void Run([ServiceBusTrigger("ngctestqueue", AccessRights.Manage, Connection = "AzureWebJobsServiceBus")]string myQueueItem, TraceWriter log)
{
log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
}
}
}
host.json {
}
local.settings.json
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=ngctest2;AccountKey=STORAGE_ACCOUNT_KEY;EndpointSuffix=core.windows.net",
"AzureWebJobsDashboard": "DefaultEndpointsProtocol=https;AccountName=ngctest2;AccountKey=STORAGE_ACCOUNT_KEY;EndpointSuffix=core.windows.net",
"AzureWebJobsServiceBus": "Endpoint=sb://ngcservicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SERVICE_BUS_KEY",
"connection": "Endpoint=sb://ngcservicebus.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SERVICE_BUS_KEY"
}
}
当我在本地通过 F5 运行 函数时,即使队列中有尚未处理的消息,它也不会被触发。:
%%%%%%
%%%%%%
@ %%%%%% @
@@ %%%%%% @@
@@@ %%%%%%%%%%% @@@
@@ %%%%%%%%%% @@
@@ %%%% @@
@@ %%% @@
@@ %% @@
%%
%
[10/11/2017 4:51:13 PM] Host has been specialized
Listening on http://localhost:7071/
Hit CTRL-C to exit...
[10/11/2017 4:51:13 PM] Reading host configuration file 'C:\Users\User1\source\r
epos\FunctionApp1\FunctionApp1\bin\Debug\net461\host.json'
[10/11/2017 4:51:13 PM] Host configuration file read:
[10/11/2017 4:51:13 PM] {
[10/11/2017 4:51:13 PM]
[10/11/2017 4:51:13 PM] }
[10/11/2017 4:51:14 PM] Loaded custom extension 'BotFrameworkConfiguration'
[10/11/2017 4:51:14 PM] Loaded custom extension 'SendGridConfiguration'
[10/11/2017 4:51:14 PM] Loaded custom extension 'EventGridExtensionConfig'
[10/11/2017 4:51:14 PM] Generating 1 job function(s)
[10/11/2017 4:51:14 PM] Starting Host (HostId=intelpc-1600078640, Version=1.0.11
232.0, ProcessId=27016, Debug=False, Attempt=0)
[10/11/2017 4:51:14 PM] Found the following functions:
[10/11/2017 4:51:14 PM] FunctionApp1.Function1.Run
[10/11/2017 4:51:14 PM]
[10/11/2017 4:51:14 PM] Executing HTTP request: {
[10/11/2017 4:51:14 PM] "requestId": "755084c1-3501-4e99-8629-8a9a48a60776",
[10/11/2017 4:51:14 PM] "method": "GET",
[10/11/2017 4:51:14 PM] "uri": "/"
[10/11/2017 4:51:14 PM] }
[10/11/2017 4:51:14 PM] Executed HTTP request: {
[10/11/2017 4:51:14 PM] "requestId": "755084c1-3501-4e99-8629-8a9a48a60776",
[10/11/2017 4:51:14 PM] "method": "GET",
[10/11/2017 4:51:14 PM] "uri": "/",
[10/11/2017 4:51:14 PM] "authorizationLevel": "Anonymous"
[10/11/2017 4:51:14 PM] }
[10/11/2017 4:51:14 PM] Response details: {
[10/11/2017 4:51:14 PM] "requestId": "755084c1-3501-4e99-8629-8a9a48a60776",
[10/11/2017 4:51:14 PM] "status": "OK"
[10/11/2017 4:51:14 PM] }
[10/11/2017 4:51:14 PM] Host lock lease acquired by instance ID '000000000000000
00000000017FED4C5'.
Debugger listening on [::]:5858
[10/11/2017 4:51:16 PM] Job host started
问题:我做错了什么,为什么不触发处理队列中的消息?
我的开发环境如下:
1) Windows 8.1 专业版
2) VS2017 社区 15.3.5
3) Azure 函数 CLI 1.0.4
附加信息 在门户中显示我的队列没有消息,但在 Cloud Explorer 中显示它们。这怎么可能?
非常感谢任何帮助。
谢谢。
Cloud Explorer 显示 Azure 存储队列,而不是服务总线队列。这些是不同的东西。
看起来您在两个服务中都有同名队列。请对齐绑定和您希望消息所在的位置。
要添加到@Mikhail 的评论中,您在 Azure 存储队列中有消息,但是,您有一个正在查看服务总线队列的 Azure 函数。
选项:
- 更改触发器以使用存储队列触发器并提供到它的连接。
- 将消息写入服务总线队列而不是存储队列