Ian*_*Ian 1 c# azure azureservicebus azure-webjobs azure-webjobssdk
我参与了一个多层项目,其中一部分正在消耗来自第三方系统的"事件"流.供应商通过Azure Service Bus主题发布这些主题 - 它们提供,控制和管理总线.我们只提供了URI,TopicName和Subscription详细信息.
我们的方法是使用ServiceBusTriggerSDK中提供的Webjob组合来处理侦听新消息并触发将它们处理到我们的系统中.然而,由于这项工作一直无法从主题中读取,我们似乎已经遇到了障碍.这项工作失败了,含糊不清Timeout Exception:
Unhandled Exception: System.TimeoutException: The timeout elapsed upon attempting to obtain a token while accessing 'https://****-sb.accesscontrol.windows.net/WRAPv0.9/'.
---> System.IdentityModel.Tokens.SecurityTokenException: The token provider was unable to provide a security token while accessing 'https://****-sb.accesscontrol.windows.net/WRAPv0.9/'.
Token provider returned message: 'The operation has timed out'.
Run Code Online (Sandbox Code Playgroud)
但进一步下来,跟踪包括:
[ERR] at Microsoft.ServiceBus.Common.AsyncResult.End[TAsyncResult](IAsyncResult result)
[ERR] at Microsoft.ServiceBus.NamespaceManager.OnEndTopicExists(IAsyncResult result)
[ERR] at Microsoft.ServiceBus.NamespaceManager.EndTopicExists(IAsyncResult result)
Run Code Online (Sandbox Code Playgroud)
供应商随后确认了Subscription对主题的唯一许可/声明是 Listen
任何人都可以确认许可要求是ServiceBusTrigger什么?
而作为一个+1,假设它,无论出于何种原因,需要更多Listen(即需求Manage),是否有人愿意提出另一种方法?丢失WebJob基础设施似乎很遗憾(该项目已经有3个其他工作) - 特别是丢失了来自主题的消息的异步和并发处理等功能
为了结束这一点,我们对WebJobs SDK进行了建议的更改(在此处提取请求:https://github.com/Azure/azure-webjobs-sdk/pull/528).这将在下一个版本中.以下是如何指定每个属性的AccessRights的示例:
public static void JobFunction(
[ServiceBusTrigger("inputqueue", AccessRights.Listen)] string message,
[ServiceBus("outputqueue", AccessRights.Send)] out string message)
{
. . .
}
Run Code Online (Sandbox Code Playgroud)
未指定时,默认为"管理".当设置为manage以外的任何内容时,SDK将不会尝试创建任何SB资源.我认为这符合您的需求?
| 归档时间: |
|
| 查看次数: |
911 次 |
| 最近记录: |