我正在查询这样一个点火缓存:
try (QueryCursor<Cache.Entry<Long, IgniteAccountOrder>> qryCursor = cache.query(new ScanQuery<>())) {
qryCursor.forEach(
entry -> System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()));
}
这很好,并且这个值被序列化得很好。
一旦将任何筛选器添加到查询中,就会出现异常。下面是与始终返回true的过滤器完全相同的代码,这在技术上等同于上面的代码,没有任何过滤器:
IgniteBiPredicate<Long, IgniteAccountOrder> filter = (key, p) -> true;
try (QueryCursor<Cache.Entry<Long, IgniteAccountOrder>> qryCursor = cache.query(new ScanQuery<>(filter))) {
qryCursor.forEach(
entry -> System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()));
}
第二个代码出现以下异常:
线程"main“中的异常:点燃未能处理请求4:未能在org.apache.ignite.internal.client.thin.TcpClientChannel.convertException(TcpClientChannel.java:336) at org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:296) at org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:218) at org.apache.ignite.internal.client.thin.ReliableChannel.lambda$service$1(ReliableChannel.java:上反序列化对象typeName=java.lang.invoke.SerializedLambdaorg.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:763) at org.apache.ignite.internal.client.thin.ReliableChannel.applyOnDefaultChannel(ReliableChannel.java:731) at org.apache.ignite.internal.client.thin.ReliableChannel.service(ReliableChannel.java:164) at org.apache.ignite.internal.client.thin.GenericQueryPager.next(GenericQueryPager.java:93) at org.apache.ignite.internal.client.thin.ClientQueryCursor$1.nextPage(ClientQueryCursor.java:93) at org。apache.ignite.internal.client.thin.ClientQueryCursor$1.hasNext(ClientQueryCursor.java:76) at java.base/java.lang.Iterable.forEach(Iterable.java:74)
发布于 2022-03-03 14:06:59
问题是远程服务器无法使用IgniteAccountOrder类。
我通过瘦客户端连接到远程服务器,瘦客户端无法启用对等加载。
我做了以下工作来完成这项工作:
加载启用对等类的对等类。
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setPeerClassLoadingEnabled(true);
https://stackoverflow.com/questions/71319191
复制