当前位置: 首页 > 知识库问答 >
问题:

Apache Ignite瘦客户端异常处理

皮献
2023-03-14

我使用Apache Ignite 2.7.5作为.NET核心中服务器和瘦客户机。当我做与缓存相关的操作时,put、get和load等.net核心应用程序会自动崩溃。

因此,我想处理for循环内部的异常,例如IgniteCheckedExceptionBinaryInvalidTypeExceptionClassNotFoundException等,然后从catch块抛出for循环,否则如果只有异常块,则继续循环迭代。

public async void loadData(string configPath,List<JObject> dataList)
    {

        using (var ldr = _ignite.GetDataStreamer<string, Employee>(cacheName))
        {             

            foreach (var item in parsedObjectList)
            {
                try
                {
                    JObject keyObj = new JObject();
                    foreach (var keyName in keyArray)
                    {
                        keyObj[keyName.ToString()] = item[keyName.ToString()];
                    }

                    var serializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };

                    JsonConvert.PopulateObject(item.ToString(), emp, serializerSettings);

                    string json = JsonConvert.SerializeObject(keyObj, Formatting.None);

                    string base64EncodedKey = Convert.ToBase64String(Encoding.UTF8.GetBytes(json));

                    await ldr.AddData(base64EncodedKey, emp);                   

                }
                catch (IgniteCheckedException ex)//how to handle here
                {
                    throw;
                }
                catch (BinaryInvalidTypeException ex)//how to handle here
                {
                    throw;
                }
                catch (ClassNotFoundException ex)//how to handle here
                {
                    throw;
                }
                catch (Exception ex)
                {
                //continue for loop if data parsing ,some normal exception
                    Console.WriteLine(ex);
                }
            }

        }
    }

共有1个答案

东郭勇
2023-03-14

当您从瘦.NET客户端捕获异常时,与任何此类客户端一样,最好的操作过程是重试,如果再次失败,则等待一段时间,关闭连接,打开新连接,再试一次。如果也失败,则重新抛出(写入日志,失败当前操作)。

 类似资料:
  • 我有一个使用RESTEasy的简单客户端,如下所示: 服务器配置为在以及一条有用的信息。正在抛出一个。除了包装在中之外,我如何使捕获异常并以字符串形式返回响应的有用消息。我尝试了各种实现,但似乎都是正确的。上述代码从未调用。我错过了什么? 我目前的解决方法是使用,然后执行并将原始状态填充到响应实体中。这样我就避免了异常抛出。

  • 那么如何提取错误代码呢?我想提取错误代码并构建一个responseEntity 我得到了这段代码,但不知道如何在函数中使用。

  • 我正在尝试处理下游服务抛出的异常并捕获错误代码以及错误响应消息。在网上搜索了一些解决方案后,我看到了下面处理异常的常用方法,但我真的不确定我必须在我的MyCustomConnectionException中写些什么?顺便说一下,当我使用Resttemplate时,我可以通过抛出HttpClientResponseException来轻松地处理并捕获所有内容,但我真的不知道这是如何工作的?我是使用W

  • 我对netty比较陌生,不确定自己做的事情是否正确。我会尽量短一点。如果有任何不清楚的地方,请询问更多信息。 因此,我有一个提供HTTP请求的netty服务器,其中的内容应该是序列化为Json字符串的protobuf消息。 通道管道如下所示: 前两个通道处理程序是标准的netty工具, HttpProtobufServerCodec类似于: 和HttpToProtobufDecoder类似于: 因

  • 我最近从Ruby的Net:HTTP类切换到rest-client 1.6.7。

  • 我正在尝试构建一个apache ignite thinclient poc,并且能够连接到集群,还可以使用ScanQuery读取数据。但我仍然停留在为任何缓存更新创建一个监听器上。我翻阅了一下,但找不到瘦客户机的任何东西。ignite瘦客户端是否支持侦听缓存更新?我该怎么做?