use*_*050 6 azure visual-studio azureservicebus azure-servicebus-queues azure-functions
我有一个Azure服务总线队列触发器功能,当我创建它时,它问我3个字段,访问权限,连接和队列名称.
我投入了听取访问权限.对于连接,我使用了我创建的服务总线中的"RootManageSharedAccessKey"中给出的"主连接"名称.它看起来像这样
端点= SB://yogaband2017.servicebus.windows.net/; SharedAccessKeyName = RootManageSharedAccessKey; SharedAccessKey = JG0gwJ90bkbGl1BU =
我在我的服务总线中创建了一个名为yogaband的队列,这就是我用作队列名称作为第三个参数的队列.
我的功能看起来像这样
public static class PostEventEmails
{
[FunctionName("PostEventEmails")]
public static void Run([ServiceBusTrigger("yogaband2017", AccessRights.Listen, Connection = "Endpoint=sb://yogaband2017.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=gkbGl1BU=")]string myQueueItem, TraceWriter log)
{
log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
}
}
Run Code Online (Sandbox Code Playgroud)
当我发布该功能时,我得到了这个警告
.nuget\packages\microsoft.net.sdk.functions\1.0.2\build \netstandard1.0\Microsoft.NET.Sdk.Functions.Build.targets(31,5):警告:函数[PostEventEmails]:找不到值名为'Endpoint = sb://yogaband2017.servicebus.windows.net/; SharedAccessKeyName = RootManageSharedAccessKey; SharedAccessKey = 0bkbGl1BU ='在local.settings.json中匹配'serviceBusTrigger'上设置的'connection'属性[C:\ Users\Source \工作区\ YogaBand2017\YogaBand2017\PostEventEmails\PostEventEmails.csproj]
在我的网站中,我可以向队列传递一条消息,我在Azure门户网站的队列中看到了该消息,但该功能并未获取消息并对其进行处理.所以我仍然在队列中的活动消息计数中看到"1消息".我假设在函数选择并处理它之后它将为0,我会在窗口中看到日志跟踪?但我不是这样,我认为连接不正确或我没有正确配置,但我不知道是什么!
这是我放入local.settings.json文件的内容
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "Endpoint=sb://yogaband2017.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=bGl1BU=",
"AzureWebJobsDashboard": ""}}
Run Code Online (Sandbox Code Playgroud)
仅供参考 - 这是我在c#中将消息发送到队列的方式
var queueClient = QueueClient.Create("yogaband2017");
BrokeredMessage message = new BrokeredMessage("some test message");
message.MessageId = newEvent.YogaSpaceEventId.ToString();
queueClient.Send(message);
Run Code Online (Sandbox Code Playgroud)
在我的web.config文件中,我添加了这个
<add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://yogaband2017.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=0gwJ90bkbGl1BU="/>
Run Code Online (Sandbox Code Playgroud)
Mik*_*kov 17
Connection
property的属性ServiceBusTrigger
应设置为设置名称,而不是连接字符串本身:
[ServiceBusTrigger("yogaband2017", AccessRights.Listen, Connection = "MyConn")]
Run Code Online (Sandbox Code Playgroud)
然后,local.settings.json
为本地开发环境定义具有此名称的设置:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "... azure storage connection string ...",
"MyConn": "... service bus connection string ..."
}
}
Run Code Online (Sandbox Code Playgroud)
并在Azure部署的应用程序设置中.
请注意,这AzureWebJobsStorage
不是服务总线连接.
归档时间: |
|
查看次数: |
2695 次 |
最近记录: |