我有一个Azure service bus队列触发函数,当我创建它时,它问我3个字段:访问权限、连接和队列名称。
我输入了监听权限。对于连接,我使用了在我创建的服务总线中的RootManageSharedAccessKey中给出的主连接名称。它看起来像这样
Endpoint=sb://yogaband2017。服务总线。窗户。净/;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}");
}
}
当我发布函数时,我得到了这个警告
.nuget\packages\microsoft。网sdk。函数\1.0.2\build\netstandard1。0\Microsoft。网Sdk。功能。建筑目标(31,5):警告:函数[PostEventEmails]:找不到名为“Endpoint=sb://yogaband2017”的值。服务总线。窗户。净/;SharedAccessKeyName=RootManageSharedAccessKey;本地的SharedAccessKey=0bkbGl1BU='。设置。与“serviceBusTrigger”上设置的“connection”属性匹配的json[C:\Users\Source\Workspace\YogaBand2017\YogaBand2017\PostEventEmails\PostEventEmails.csproj]
在我的站点中,我可以向队列传递消息,并且在Azure门户的队列中看到消息,但是函数没有拾取消息并处理它。所以我仍然在队列中的活动消息计数中看到“1条消息”。我假设它将是0后,函数拿起它并处理它,我会在窗口中看到日志跟踪?但是我不这么认为,所以我认为连接不正确,或者我没有正确配置一些东西,但我不知道是什么!
这是我放在当地报纸上的东西。设置。json文件
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "Endpoint=sb://yogaband2017.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=bGl1BU=",
"AzureWebJobsDashboard": ""}}
仅供参考-以下是我如何将mesage发送到c中的队列#
var queueClient = QueueClient.Create("yogaband2017");
BrokeredMessage message = new BrokeredMessage("some test message");
message.MessageId = newEvent.YogaSpaceEventId.ToString();
queueClient.Send(message);
在我的web.config里我加了这个
<add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://yogaband2017.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=0gwJ90bkbGl1BU="/>
ServiceBusTrigger
的Connection
属性应设置为设置名称,而不是连接字符串本身:
[ServiceBusTrigger("yogaband2017", AccessRights.Listen, Connection = "MyConn")]
然后在local中定义具有此名称的设置。设置。本地开发环境的json
:
json prettyprint-override">{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "... azure storage connection string ...",
"MyConn": "... service bus connection string ..."
}
}
以及Azure部署的应用程序内设置。
注意AzureWebJobStore
不是服务总线连接。
我们有一个使用NServicebus的本地Web应用程序,我们希望将队列移动到Azure(作为完全基于云的更大迁移路径的一部分)。我正试图建立一个POC,但似乎无法让它工作。 我有以下配置: 在我的应用程序中,我将总线配置为: 当我尝试发布到队列时,我得到以下消息: 我有点不知所措,我尝试了在网上找到的几种不同的示例,但我觉得我对azure知识的缺乏阻碍了我的发展。我从这个问题中提取了大部分配置:
我正在尝试在本地运行一个azure队列触发函数。我安装了Azure Storage Emulator并运行命令“AzureStorageEmulator.exe init”以在“(localdb)\mssqllocaldb”服务器上创建“AzureStorageEmulatorDB59”数据库。 在具有队列触发器函数的azure functions项目中,我有一个local.settings.js
我整天都在想这个问题,但就是不能让我的本地VSCode开发环境用Python worker处理EventHub触发。 Microsoft.Azure.WebJobs.Host:错误索引方法'Functions.myfunctionname'。Microsoft.Azure.WebJobs.EventHubs:值不能为空。参数名称:接收器连接字符串。 函数“Functions.myfunctionn
使用服务总线触发器创建Azure函数并部署在Azure门户中。使用servicebusExplorer,将队列发送到门户并正常工作。但在Azure中停止函数后,将消息从资源管理器发送到Visual Studio中的本地代码进行调试。但它不触发。 我在local.settings.json中给出了服务连接字符串,队列名称正确。从Visual Studio运行函数后,它在azure CLI中抛出错误。
我正在Azure中创建一个函数应用程序,并希望使用队列触发器。我知道如何在设计时配置队列名称,例如: 但是,我希望能够在配置文件中定义和引用它。我知道函数的存在。json(可能是这个),主机。json和本地。设置。json,但我不知道如何在其中设置队列名称并在函数中引用它。 如果我部署在VisualStudio中新创建的函数(使用新的15.3更新),我可以在函数中看到以下内容。部署后的json文件
本文向大家介绍azure-webjobs 队列触发器,包括了azure-webjobs 队列触发器的使用技巧和注意事项,需要的朋友参考一下 示例 一个简单的示例,定义一个由队列消息触发的功能: 它还支持POCO序列化: