Как наиболее эффективно использовать служебную шину вместе с сервером SQL в функциях Azure? - PullRequest
0 голосов
/ 20 января 2020

Я работаю над функцией Azure, в которой мне нужно прочитать данные из очереди служебной шины и записать их в таблицу Azure SQL.

Моя проблема: Часть служебной шины является реактивной и запускается для каждого нового сообщения, поступающего в очередь, в то время как весь процесс установки и открытия соединения Azure SQL требует установки ставки только один раз, предпочтительно перед раздачей.

В настоящее время моя функция такова:

using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using System.Data.SqlClient;
using System.Text;

namespace SbTrigger01
{
    public static class SbTrigger02
    {
       static SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();

        [FunctionName("SbTrigger02")]
        public static void Run([ServiceBusTrigger("BasicQueue", Connection = "servicebus00ghjs1968_RootManageSharedAccessKey_SERVICEBUS")]string myQueueItem, ILogger log)
        {
            builder.DataSource = "myazuresql001968.database.windows.net";
            builder.UserID = "sqladminwek1968";
            builder.Password = "@Myazuresql00sdjhj1968";
            builder.InitialCatalog = "mySampleDatabase";

            using (SqlConnection conn = new SqlConnection(builder.ConnectionString))
            {
                conn.Open();

                string query = "INSERT INTO [SalesLT].[messages] (message) VALUES(@Message)";
                SqlCommand cmd = new SqlCommand(query, conn);
                System.Diagnostics.Trace.TraceError(myQueueItem);
                cmd.Parameters.AddWithValue("@Message", myQueueItem);

                cmd.ExecuteNonQuery();
            }

            log.LogInformation($" {myQueueItem}");
        }
    }
}

Я подозреваю, что этот код заставляет SQL определять и открывать соединение для каждого нового сообщения служебной шины, что довольно ужасно .

Есть ли лучший способ структурирования этого кода, чтобы соединение SQL объявлялось и открывалось только один раз, и для каждого нового сообщения служебной шины выполняется только оператор INSERT?

1 Ответ

1 голос
/ 21 января 2020

Поздравляем, вы можете получить ответ по этой ссылке:

Azure Функции stati c SqlConnection - правильный способ масштабирования?

Я помогу вам опубликовать это как ответ. Это может быть полезно для других участников сообщества.

Спасибо Шону Фельдману и Иану Кемпу.

...