Contains types to facilitate RPC communication between a worker extension and the functions host.
$ dotnet add package Microsoft.Azure.Functions.Worker.Extensions.RpcThis package provides helpers for RPC communication with the functions host.
FunctionsGrpcOptionsGrpcHttpClientBuilderExtensions.ConfigureForFunctionsHostGrpc (>= net6.0 only)Both examples below you have some gRPC client "MyGrpcClient" which has a CallInvoker accepting constructor.
When using netstandard2.0, creating a gRPC client that communicates to the host is done via FunctionsGrpcOptions.
[assembly: WorkerExtensionStartup(typeof(WorkerRpcStartup))]
public class MyWorkerExtensionStartup : WorkerExtensionStartup
{
public override void Configure(IFunctionsWorkerApplicationBuilder applicationBuilder)
{
applicationBuilder.Services.AddTransient<MyGrpcClient>(sp =>
{
IOptions<FunctionsGrpcOptions> options = sp.GetRequiredService<IOptions<FunctionsGrpcOptions>>();
return new MyGrpcClient(options.CallInvoker);
});
}
}
When using net6.0 or newer, creating a gRPC client can be done either the same way as the netstandard example, or it can be done via Grpc.Net.ClientFactory. Using the client factory lets you further customize your client.
[assembly: WorkerExtensionStartup(typeof(WorkerRpcStartup))]
public class MyWorkerExtensionStartup : WorkerExtensionStartup
{
public override void Configure(IFunctionsWorkerApplicationBuilder applicationBuilder)
{
applicationBuilder.Services
.AddGrpcClient<MyGrpcClient>(options =>
{
// configure options here as necessary.
})
.ConfigureForFunctionsHostGrpc();
}
}