0

我正在使用 Azure 中继混合连接处理程序测试 Azure 事件网格。它不适合我。

我可以看到正在发布到 Azure 事件网格的消息。到目前为止,一切都很好。

我已设置对事件网格主题的订阅,并将其配置为将事件发送到指定为具有混合连接终结点的 Azure 中继的处理程序。

查看使用混合连接处理程序的订阅指标,我看到以下遥测数据:

  • 匹配事件
  • 运送失败
  • 过期活动

…但我没有看到“交付成功”事件???

此外,连接到 Azure 中继的混合连接侦听器(只是一个简单的控制台应用程序)不会收到任何信息。我已经通过直接向中继发送一些测试消息来测试侦听器,并且效果很好。

合乎逻辑的结论是,发布到事件网格的事件可能没有传递到中继混合连接处理程序。但为什么?没有那么多参数,所以我不确定我做错了什么。配置它似乎相当简单。

我开始相信事件网格/混合连接方案目前不起作用。毕竟它是在预览中,所以可以解释它。

我知道这里没什么可做的,但我希望其他人可能对此有一些经验?

问题仍然存在。这些问题似乎与从事件网格订阅传递到混合连接的 json 格式有关。

更新

我终于有时间更仔细地研究一下了。

我设置了事件网格测试器,每次事件网格收到一条消息时,我都会在日志中看到这个错误:

HybridConnection: Message processing failed - Unable to cast object of type 'Newtonsoft.Json.Linq.JValue' to type 'Newtonsoft.Json.Linq.JObject'.

我仍然无法解决此问题,因为我无法控制消息。消息由 Azure 逻辑应用生成并使用事件网格连接器发送到事件网格。Azure 逻辑应用程序中的事件网格连接器处于预览状态,这可能解释了我所看到的挑战。

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

1

我已经使用 Azure Relay 在本地成功测试了 Event Grid 订阅者,并在此处记录了它。它基于 Microsoft 使用客户端的 WCF 变体提供和实现的示例,而不是.NET Standard 版本

于 2018-06-17T10:58:08.223 回答
1

您可以使用 http POST 请求向 HybridConnection url 模拟事件网格消息:

POST https://{myNamespace}.servicebus.windows.net/{myHybridConnectionName}

headers:
    content-type: application/json
    x-ms-version: 2015-07-08
    Aeg-Event-Type: Notification
    Authorization: SharedAccessSignature sr=xxx&sig=xxxx&se=11111111&skn=xxxxx

body:
    {
       "id": "123456",
       "eventTime": "2018-07-22T13:09:07.5164877Z",
       "eventType": "recordInserted",
       "dataVersion": "1.0",
       "metadataVersion": "1",
       "subject": "/myapp/vehicles/motorcycles",
       "data": {
          "make": "Ducati",
          "model": "Monster"
       }
   }

请注意,当 HybridConnection 已打开时,可以从Azure Event Grid Tester日志面板复制授权标头的 sasToken。

另一种选择是通过以下代码生成它:

using Microsoft.Azure.Relay;
// ... 
var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider("hybridconnectionPolicyName", "hybridconnectionPrimaryKey");
var token = tokenProvider.GetTokenAsync("https://{myNamespace}.servicebus.windows.net/{myHybridConnectionName}", TimeSpan.FromDays(10)).Result.TokenString;
于 2018-09-10T13:47:37.820 回答