我正在将 Durable Functions 应用程序从进程内模型移至隔离模型。
我在协调器和活动之间以及需要自定义序列化的活动之间发送了一些消息。
目前,我按照“
使用依赖注入自定义序列化”,使用
IMessageSerializerSettingsFactory
中的 Startup.cs
注册我的 JsonConverter。
IMessageSerializerSettingsFactory
在隔离模型中不可用。
Microsoft 文档参考了
WorkerOptions.Serializer
,但没有提供示例。
如何注册我的
JsonConverter
以便在隔离模型中的消息序列化期间使用它们?
这是我到目前为止所想到的,但最好对这种方法有一些评论/确认。
builder.Services.AddOptions<JsonSerializerOptions>()
.Configure(options =>
{
options.Converters.Add(MyConverter);
options.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
});
builder.Services.AddOptions<WorkerOptions>()
.Configure(options =>
{
options.Serializer = new JsonObjectSerializer(
builder.Services.BuildServiceProvider()
.GetRequiredService<JsonSerializerOptions>());
});
我希望 Functions runtume 采用第二个注册来执行它执行的所有序列化(活动之间的消息),并且第一个注册让我可以注入选项,我可以在其中专门自己进行序列化,例如在返回
HttpResponseData
时来自 Http 触发器:
req.CreateResponse().WriteAsJsonAsync(poco,
new JsonObjectSerializer(
new JsonSerializerOptions(...)));
经过多次浏览后,我发现了这个Azure Functions独立配置示例。