Привязка EventHubTrigger EventData[] не работаетC#

Место общения программистов C#
Ответить
Anonymous
 Привязка EventHubTrigger EventData[] не работает

Сообщение Anonymous »

Я создаю изолированный рабочий процесс C#. Функция Azure, запускаемая EventHub, которая выводит список EventData с заголовками в другой EventHub.
Функция работает хорошо при использовании привязки string[], но когда я использую привязку EventData из Azure.Messaging.EventHubs, функция выдает в консоли следующие сообщения:

Код: Выделить всё

System.Private.CoreLib: Exception while executing function: Functions.MyFunction. Microsoft.Azure.WebJobs.Host: Exception binding parameter 'eventDatas'. Azure.Core.Amqp: Serialization failed due to an unsupported type, System.Byte[].
Executed 'Functions.MyFunction' (Failed, Id=4a2fcfa1-0042-4cb8-92d6-75289685b4dd, Duration=15ms)
System.Private.CoreLib: Exception while executing function: Functions.MyFunction. Microsoft.Azure.WebJobs.Host: Exception binding parameter 'eventDatas'. Azure.Core.Amqp: Serialization failed due to an unsupported type, System.Byte[].
Файл проекта

Код: Выделить всё

    net7.0
v4

...






Код функции

Код: Выделить всё

using Azure.Messaging.EventHubs;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using my.Models;
using Newtonsoft.Json;

namespace my.function
{
public class MyFunction
{
[EventHubOutput("EventHubOutput", Connection = "EventHubOutputConnectionString")]
[FixedDelayRetry(5, "00:00:10")]
[Function("MyFunction")]
public EventData[] Run([EventHubTrigger("EventHubInput", Connection = "EventHubInputConnectionString", IsBatched = true)] EventData[] eventDatas)
{
List eventDataOutputs = new List { };

// Receive events
foreach (EventData eventData in eventDatas)
{
// Serialize the event
string eventJsonBody = eventData.EventBody.ToString();
MyObject? myObject = JsonConvert.DeserializeObject(eventJsonBody);

// Append nested elements
if (myObject != null)
{
eventDataOutputs.AddRange(myObject.nestedElements.Select(nestedElement => new EventData(JsonConvert.SerializeObject(nestedElement))));
}
}
return eventDataOutputs.ToArray();
}
}
}
Класс MyObject

Код: Выделить всё

namespace my.Models
{
using Newtonsoft.Json;

public class MyObject
{
[JsonProperty("randomField")]
public string RandomField { get; set; }

[JsonProperty("nestedFields")]
public NestedField[] NestedFields { get; set; }
}
}
Класс NestedField

Код: Выделить всё

namespace my.Models
{
using Newtonsoft.Json;

public class NestedField
{
[JsonProperty("randomFieldNested")]
public string RandomField { get; set; }

[JsonProperty("time")]
public DateTimeOffset Time { get; set; }

[JsonProperty("longField")]
public long LongField { get; set; }
}
}
Обновление
Я попробовал новую версию EventHub и получил события.


Подробнее здесь: https://stackoverflow.com/questions/768 ... ot-working
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»