我试图使用事件中心将消息发送到Azure流分析。在Azure上,我可以在监视器上清楚地看到“事件”活动,但是在Stream Analytics Job上,我只是无法测试输入数据。
我尝试仅测试一个文件,但我的json文件可以正常工作。在我用来发送消息的C#代码下面:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;
using System.IO;
using Newtonsoft.Json;
using Microsoft.Azure.EventHubs;
namespace contosorealtimeapplication
{
public class Program
{
private static Microsoft.Azure.EventHubs.EventHubClient eventHubClient;
private const string EventHubConnectionString = "Endpoint=sb://***************.servicebus.windows.net/;SharedAccessKeyName=***************;SharedAccessKey=***************";
private const string EventHubName = "contosorealtime";
public static void Main(string[] args)
{
MainAsync(args).GetAwaiter().GetResult();
}
private static async Task MainAsync(string[] args)
{
var connectionStringBuilder = new EventHubsConnectionStringBuilder(EventHubConnectionString)
{
EntityPath = EventHubName
};
eventHubClient = Microsoft.Azure.EventHubs.EventHubClient.CreateFromConnectionString(connectionStringBuilder.ToString());
await SendMessagesToEventHub();
await eventHubClient.CloseAsync();
Console.WriteLine("Press ENTER to exit.");
Console.ReadLine();
}
// Creates an event hub client and sends 100 messages to the event hub.
private static async Task SendMessagesToEventHub()
{
//get JSON file configured on app-setting
string localFolder = ConfigurationManager.AppSettings["sourcefolder"];
string[] fileEntries = Directory.GetFiles(localFolder);
string message = "";
string serialisedString = "";
foreach (string filePath in fileEntries)
{
try
{
serialisedString = JsonConvert.SerializeObject(filePath);
message = $"Message {serialisedString}";
Console.WriteLine($"Sending message: {message}");
await eventHubClient.SendAsync(new Microsoft.Azure.EventHubs.EventData(Encoding.UTF8.GetBytes(serialisedString)));
}
catch (Exception exception)
{
Console.WriteLine($"{DateTime.Now} > Exception: {exception.Message}");
}
}
}
}
}
我100%确定它缺少分区键,但是我找不到正确传递它的方法。
我从这个例子中得到了这个例子:https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-dotnet-standard-getstarted-send
在“事件中心”活动下:
以下是输入详细信息:
以下是我尝试从输入中上传示例数据时收到的Azure流分析作业消息:
这是我从文件(json文件)上传数据时的结果:
有人知道如何解决吗?
PS。杰森工作正常。
答案 0 :(得分:0)
我假设您选择输入数据格式为json。在示例代码中,您正在发送字符串作为事件中心有效负载。 ASA仅支持对象数组或空格分隔的对象。如果文件名是您唯一感兴趣的字段,请将其作为json对象发送-类似{ "fileName": "value"}