我正在研究这个使用EventHub -> Stream Analytics Job -> Storage Table / Blob
结构的项目,我想为它编写几个单元测试。
我可以测试EventHub
发件人状态以查看查询是否具有预期的行为,但我如何检查数据是否被发送到表存储,因为整个过程不会立即发生从我点击EventHub到数据保存到存储的那一刻起,有一段很长的延迟。
答案 0 :(得分:1)
首先创建一个新的Azure Table存储帐户,然后在该帐户中创建一个新的Azure表。在Stream Analytics作业中,为表存储添加新输出。设置输出详细信息时,您需要指定存储帐户,帐户密钥,表名以及事件中的哪些列名称将代表Azure表分区和行键。举个例子,我这样设置:
设置输出后,您可以创建一个简单的Stream Analytics查询,将输入事件从Event Hub映射到Azure Table输出。我还有一个名为'eventhub'的事件中心输入,具有发送/侦听权限。我的查询如下:
SELECT
*
INTO
tableoutput
FROM
eventhub
此时点击Azure门户中的“开始”按钮以运行Stream Analytics作业。要生成事件,您可以按照here的说明操作,但将事件消息更改为:
string guid = Guid.NewGuid().ToString();
var message = "pk,rk,value\n" + guid + ",1,hello";
Console.WriteLine("{0} > Sending message: {1}", DateTime.Now, message);
eventHubClient.Send(new EventData(Encoding.UTF8.GetBytes(message)));
要了解Azure Table结果,请下载TableXplorer之类的工具并输入存储帐户详细信息。双击Azure表,您应该看到如下所示的内容。请记住,您可能需要定期在TableXplorer查询中按F5 10-60秒,直到数据被推送完毕。当它出现时,它将如下所示:
对于编程单元测试,您需要将Event Hub代码中生成的分区键/行键值推送到数据结构中,并让工作人员使用点查询轮询Azure表。 Azure表使用情况的一个很好的概述是here。