2017-10-11 88 views
0

我無法通過ServiceBusQueueTrigger觸發Azure函數。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)天青功能的CLI 1.0.4

附加信息 在門戶網站中顯示我的隊列沒有消息,但在Cloud Explorer中顯示它們。這怎麼可能?

enter image description here

enter image description here

任何幫助將真正理解。

謝謝。

+0

你能仔細檢查您的隊列的名稱是「ngctestqueue」 –

+0

是它!我還添加了圖片。 – CloudDev

回答

1

Cloud Explorer顯示Azure存儲隊列,而不是服務總線隊列。那些是不同的東西。

看起來你在兩個服務中都有同名的隊列。請將綁定和你想要的信息對齊。

+0

這是遲緩的..應該有更好的工具! – CloudDev

+0

您可以使用[Service Bus Explorer](https://code.msdn.microsoft.com/windowsapps/Service-Bus-Explorer-f2abca5a)檢查SB消息。但我同意,工具可能會更好。 – Mikhail

1

要添加到@ Mikhail的評論中,您的郵件位於Azure存儲隊列中,但是,您有一個正在查看服務總線隊列的Azure功能。

選項:

  1. 改變觸發使用存儲隊列觸發,並提供給它的連接。
  2. 寫郵件到服務總線隊列,而不是存儲隊列