Не могу получить вход в Azure Stream Analytics через концентратор событий - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь отправить сообщения в Azure Stream Analytics с помощью концентратора событий.В Azure отчетливо видно активность событий на мониторе, но в задании Stream Analytics я просто не могу проверить входные данные.

Я попытался проверить только один файл, и он работает, мой файл 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 Stream Analytics при попытке загрузить пример данных из ввода:

Сообщение об ошибке Azure

Вот результат, когда я загружаю данные из файла (файл json):

Данные результата из файла

Кто-нибудь знает, как ее решить?

PS.Json работает нормально.

1 Ответ

0 голосов
/ 06 января 2019

Я предполагаю, что вы выбрали формат входных данных как json.В вашем примере кода вы отправляете строку как полезную нагрузку концентратора событий.ASA поддерживает только массив объектов или разделенных пробелами объектов.Если имя файла является единственным интересующим вас полем, отправьте его как объект json - что-то вроде { "fileName": "value"}

...