Apache Ignite瘦客户端异常处理

时间:2019-06-27 16:32:44

标签: c# .net-core ignite

我正在使用Apache Ignite 2.7.5作为.Net核心中的服务器和瘦客户端。 当我执行与缓存放置,获取和加载等有关的操作时,.net核心应用程序会自动崩溃。

所以我想处理for循环内的异常,例如IgniteCheckedExceptionBinaryInvalidTypeExceptionClassNotFoundException等,然后从catch块抛出并退出for循环,否则继续for循环如果只有Exception块则进行迭代。

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);
                }
            }

        }
    }

任何人都建议我,如何在.net core c#应用程序中实现这一目标。

1 个答案:

答案 0 :(得分:1)

当您从瘦的.net客户端捕获异常时,与任何此类客户端一样,最佳操作是重试尝试,如果再次失败,请等待一段时间,关闭连接,打开新连接,然后重试。如果仍然失败,请重新抛出(写入日志,使当前操作失败)。