EventHubTrigger EventData[]-Bindung funktioniert nichtC#

Ein Treffpunkt für C#-Programmierer
Guest
 EventHubTrigger EventData[]-Bindung funktioniert nicht

Post by Guest »

Ich erstelle einen C#-isolierten Arbeitsprozess, eine Azure-Funktion, die von einem EventHub ausgelöst wird und eine Liste von EventData mit Headern in einen anderen EventHub ausgibt.
Die Funktion funktioniert gut Wenn ich die Bindung string[] verwende, aber wenn ich die Bindung EventData von Azure.Messaging.EventHubs verwende, gibt die Funktion die folgenden Meldungen in der Konsole aus:

Code: Select all

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[].
Projektdatei

Code: Select all

    net7.0
v4

...






Funktionscode

Code: Select all

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-Klasse

Code: Select all

namespace my.Models
{
using Newtonsoft.Json;

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

[JsonProperty("nestedFields")]
public NestedField[] NestedFields { get; set; }
}
}
NestedField-Klasse

Code: Select all

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; }
}
}
Update
Ich habe es mit einem neueren EventHubs versucht und Ereignisse erhalten.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post