>我有一个 Flink 作业从 Kafka 队列中读取事件,然后在满足某些条件时调用另一个服务。
我想使用 Retrofit2 调用该服务的 REST 端点,但我得到一个不可序列化的异常。我有几个平面地图相互连接(串联(,然后在最后一个 FlatMap 中调用该服务。我得到的例外:
线程"main"中的异常 org.apache.flink.api.common.InvalidProgramException: RichFlatMapTFunction 的实现是不可序列化的。这 对象可能包含或引用不可序列化的字段。
...
原因:java.io.NotSerializableException: retrofit2.改造$1
...
我初始化改造的方式:
RetrofitClient.getClient(BASE_URL).create(NotificationService.class);
和通知服务界面
public interface NotificationService {
@PUT("/test")
Call<String> putNotification(@Body Notification notification);
}
改造客户端类
public class RetrofitClient {
private static Retrofit retrofit = null;
public static Retrofit getClient(String baseUrl) {
if (retrofit == null) {
retrofit = new Retrofit.Builder().baseUrl(baseUrl).addConverterFactory(GsonConverterFactory.create())
.build();
}
return retrofit;
}
输入您的通知类代码以获取更多详细信息,但看起来此答案有所帮助java.io.NotSerializableException 在类后带有"$1">