Header in EventHubOutput in Azure FunctionMiddleware C# festlegenC#

Ein Treffpunkt für C#-Programmierer
Guest
 Header in EventHubOutput in Azure FunctionMiddleware C# festlegen

Post by Guest »

Ich möchte in IFunctionsWorkerMiddleware eine Korrelations-ID festlegen für die Ausgabe eines Azure-Funktionstriggers, der EventHubOutput verwendet. Ich kann anscheinend keinen Weg finden, auf die Ereignisdaten zuzugreifen, die zurückgesendet werden, wenn ich EventHubOutput verwende.
Ich habe versucht, das InvocationResult zu manipulieren, aber das heißt, welches Objekt auch immer vom Trigger zurückgegeben wurde (kein Zugriff auf Metadaten).
Ich habe auch versucht, ein EventData-Objekt vom Trigger zurückzugeben, aber das ist nur in eine Zeichenfolge „Azure.Messaging“ serialisiert. EventHubs.EventData" on das EH-Thema und nicht das eigentliche EventData-Objekt
Irgendwelche Ideen, wie man Header/Eigenschaften in EventHubOutput-Bindungen in Function Middleware festlegt?
InvocationResult verwenden

Code: Select all

[Function("MyFunction")]
[EventHubOutput("output", Connection = "output-connection")]
public async Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequest req)
{
return "my payload";
}

Code: Select all

public class CorrelationMiddleware : IFunctionsWorkerMiddleware
{
public async Task Invoke(FunctionContext context, FunctionExecutionDelegate next)
{
await next(context);

SetOutputCorrelation(context);
}

private void SetOutputCorrelation(FunctionContext context)
{
var correlationId = Guid.NewGuid().ToString();

var result = context.GetInvocationResult();

// result is just the string returned from trigger - no access to metadata
}
}
Ereignisdaten zurückgeben

Code: Select all

[Function("MyFunction")]
[EventHubOutput("output", Connection = "output-connection")]
public async Task Run([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequest req)
{
var payload = "my payload";
var eventData = new EventData(Encoding.UTF8.GetBytes(payload));
return eventData;
}

Code: Select all

public class CorrelationMiddleware : IFunctionsWorkerMiddleware
{
public async Task Invoke(FunctionContext context, FunctionExecutionDelegate next)
{
await next(context);

SetOutputCorrelation(context);
}

private void SetOutputCorrelation(FunctionContext context)
{
var correlationId = Guid.NewGuid().ToString();

var result = context.GetInvocationResult();

if (result.Value is EventData eventData)
{
eventData.Properties["correlation-id"] = correlationId;
}
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post