Вот код:
static void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) //Event Handler
{
Time timeToSend = JsonConvert.DeserializeObject<Time>(Encoding.UTF8.GetString(e.Message));
Task.Run(async () => await SendToMySql(timeToSend));
}
В методе SendToMySql это в основном вставка, как показано ниже:
private static async Task SendToMySql(Time timeToSend)
{
try
{
var connection = new MySqlConnection(string.Format(configuration["MySql:ConnectionString"], configuration["MySql:DataBaseName"]));
await connection.OpenAsync();
string query = "insert into resource_log (resource_value_log, creation_date) values ('" + timeToSend.Message + "',STR_TO_DATE( '" + DateTime.Now + "', '%d/%m/%Y %H:%i:%s'))";
var cmd = new MySqlCommand(query, connection);
await cmd.ExecuteReaderAsync();
await connection.CloseAsync();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
}
Я вызвал этот метод с помощью Task.Run (), потому что я хотел, чтобы он тоже запускался асинхронно при необходимости. Но он выдает следующее исключение:
"Невозможно подключиться к любому из указанных хостов MySQL."
Вот внутреннее исключение:
Истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает.
Некоторые данные фактически были вставлены в MySql.
Я новичок в асинхронном и параллельном программировании, и я написал этот код, но мне интересно, правильно ли это делать асинхронный запрос в MySql. Я сделал это так же, как это, но с MongoDb, и он работал нормально. Надеюсь, вы, ребята, можете мне помочь. Спасибо.