Apache Ignite тонкий клиент Обработка исключений - PullRequest
1 голос
/ 27 июня 2019

Я использую Apache Ignite 2.7.5 в качестве сервера и тонкого клиента в ядре .Net. Когда я выполняю операции, связанные с установкой, загрузкой и загрузкой кэша и т. Д., Ядро приложения автоматически выходит из строя.

Итак, я хочу обработать исключение внутри для конкретного исключения цикла, например, IgniteCheckedException, BinaryInvalidTypeException, ClassNotFoundException и т. Д., Затем бросить из блока catch и выйти из цикла, иначе продолжить для итерации цикла, если только блок 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 Ответ

1 голос
/ 28 июня 2019

Когда вы перехватываете исключение из тонкого .net-клиента, лучший способ действий, как и для любого такого клиента, - попытаться повторить попытку, если снова произойдет сбой, подождите некоторое время, закройте соединение, откройте новое соединение, попробуйте снова,Если это также не помогло, перезапустите (запись в журнал, сбой текущей операции).

...