我们使用Azure服务总线和Azure Web应用程序来填充队列。它们位于同一资源组中。我们使用WindowsAzure。服务总线v2。6.5.
我们很少得到这个错误:
X.509证书CN=servicebus.windows.net不在受信任人员存储区中。X.509证书CN=servicebus.windows.net链构建失败。使用的证书具有无法验证的信任链。替换证书或更改证书验证模式。无法为受信任的根机构生成证书链。
问:Azure上是否存在此内部错误?如果不是,我们能做些什么来避免这个错误?
我相信一定有一张遗失的证书。
从这个堆栈溢出柱https://stackoverflow.com/a/24224550/4735373以下链接可能会有所帮助:https://corp.sts.microsoft.com/Onboard/ADFSOnboard.htm#Corp-STS证书
我设法找到了关于这个问题的更多信息。首先,需要建立的是,这是一个纯粹的客户端问题,这就是为什么没有跟踪ID。客户端拒绝使用服务总线完成TLS握手。
这是一个已知的问题Microsoft如何管理证书以及如何在非HTTP(S)传输上使用证书是一个已知的问题。当承载Microsoft中间证书的endpoint不可用或速度慢,或者客户端由于任何原因无法访问时,就会发生错误。我们正在研究一种变通方法,将所需的额外证书注入SBMP和AMQP传输的TLS握手中,类似于HTTP的做法。SYS,因此不需要此额外请求。
立即可用的解决方法是启用ServiceBusEnvironment。系统连通性。模式=连接模式。Https这将强制所有流量使用WebSockets隧道,该隧道受先前TLS/Https握手的保护,并且该握手携带所需的中间证书。在建立连接时,WebSockets握手确实会增加一些额外的延迟,但在其他方面与常规通信模式相当。通过该隧道使用的消息传递协议仍然是AMQP或NetMessaging,因此在选择此选项时,您不必担心获取HTTP特性。
这是微软的回应。我会应用这个,如果我在某段时间内没有遇到任何问题,我会接受这个答案。谁面临这个问题,他们也可以尝试一下。
编辑:
连接模式。Https只是在可用的服务总线3中。由于信号机出现问题,我不得不使用servicebus 2。因此,我无法应用此解决方案。
我正在使用azure服务总线主题和订阅机制,并希望处理所有在死信队列中的消息。 此外,我想通过C#中的Azure Web作业处理消息,并将其发送回队列。所以我想知道如何通过我的应用程序处理死信队列上的消息?
我有一个服务总线Q,从Azure门户可以或多或少地看到服务总线Q包含多少条目。如何使用他们的管理API获取此计数?我仔细阅读了文档,但没有找到答案。
今天晚上,我们观察到排队时间非常慢。我们的追踪数据告诉我们 需要45-60秒。这种情况发生在两个已经存在很长时间的队列上。他们几乎从来没有超过1-2条记录,我们使用一个带有服务总线触发器的网络作业来完成任务。我们正在排队等候一个简单的POCO。还有另一个队列正在快速排队,所以由于没有任何其他想法,我删除了两个麻烦的队列。当代码重新创建它们时(正如它被构建时所做的那样),它们在不到一秒钟的时间里开始
一旦部署到云,我无法从Azure网站访问Azure服务总线队列。在localhost上运行时,如果工作正常,我可以向队列发送消息,但如果我部署应用程序,在远程服务器上创建QueueClient时会出现异常: “套接字连接被中止,因为对套接字的异步发送未在分配的超时00:00:59.4820817内完成。分配给此操作的时间可能是更长超时的一部分。” 我正在使用QueueClient。CreateFr
使用WebJobs SDK时,将代理消息移动到死信队列的正确方法是什么?通常我会打电话给味精。死信()。但是,SDK负责管理代理消息的生命周期。它将调用msg。如果方法返回成功,则返回Complete(),如果发生异常,则将重试该消息。我需要第三种情况,告诉ServiceBus队列将消息移动到死信队列,因为它是一条坏消息。
我有一个windows服务,它侦听Azure服务总线队列消息,以便从我的WebApi应用程序分发处理。此外,我还需要处理重复性任务(每晚/每周),我认为最好使用相同的系统来处理这些任务。 例如,假设我有一个“CleanupDb”队列,每天午夜删除过时的DB节点: 理论上这应该行得通,但我觉得我错过了一个更明显的处理方法。有没有更好的办法?