我尝试使用Event Hub将消息发送到Azure Stream Analytics . 在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%确定它缺少partitionkey,但我找不到正确传递它的方法 .

我从这个例子中得到了这个例子:https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-dotnet-standard-getstarted-send

在Event Hub活动下方:

Event Hub Activity

这是输入细节:

Input Configuration:

尝试从输入上传样本数据时,我在Azure Stream Analytics Job上获得的消息:

Azure error message

这是从文件(json文件)上传数据时的结果:

Result data from file

有谁知道如何解决它?

PS . Json工作正常 .