Broker Usług
Dotyczy:programu SQL Server
Azure SQL Managed Instance
Usługa SQL Server Service Broker zapewnia natywną obsługę komunikatów i kolejkowania w mechanizmie bazy danych programu SQL Server oraz Azure SQL Managed Instance. Deweloperzy mogą łatwo tworzyć zaawansowane aplikacje, które używają składników aparatu bazy danych do komunikowania się między różnymi bazami danych i tworzyć rozproszone i niezawodne aplikacje.
Kiedy należy używać usługi Service Broker
Użyj składników usługi Service Broker, aby zaimplementować natywne funkcje asynchronicznego przetwarzania komunikatów w bazie danych. Deweloperzy aplikacji korzystający z usługi Service Broker mogą dystrybuować obciążenia danych w kilku bazach danych bez programowania złożonych wewnętrznych komunikacji i obsługi komunikatów. Usługa Service Broker zmniejsza prace programistyczne i testowe, ponieważ usługa Service Broker obsługuje ścieżki komunikacyjne w kontekście konwersacji. Zwiększa również wydajność. Na przykład bazy danych front-end obsługujące strony internetowe mogą rejestrować informacje i wysyłać zadania wymagające dużego przetwarzania do kolejki w bazach danych back-end. Usługa Service Broker zapewnia, że wszystkie zadania są zarządzane w kontekście transakcji w celu zapewnienia niezawodności i spójności technicznej.
Przegląd
Service Broker to platforma dostarczania komunikatów, która umożliwia tworzenie natywnych aplikacji zorientowanych na usługi w bazie danych. W przeciwieństwie do klasycznych funkcji przetwarzania zapytań, które stale odczytują dane z tabel i przetwarzają je podczas cyklu życia zapytania, w aplikacji zorientowanej na usługę masz usługi bazy danych, które wymieniają komunikaty. Każda usługa ma kolejkę, w której komunikaty są umieszczane do momentu ich przetworzenia.
Komunikaty w kolejkach można pobrać przy użyciu polecenia Transact-SQL RECEIVE
lub procedury aktywacji, która będzie wywoływana za każdym razem, gdy komunikat pojawi się w kolejce.
Tworzenie usług
Usługi baz danych są tworzone przy użyciu instrukcji CREATE SERVICE języka Transact SQL. Usługę można skojarzyć z kolejką komunikatów, tworząc ją za pomocą instrukcji CREATE QUEUE.
CREATE QUEUE dbo.ExpenseQueue;
GO
CREATE SERVICE ExpensesService
ON QUEUE dbo.ExpenseQueue;
Wysyłanie komunikatów
Wiadomości są wysyłane podczas konwersacji między usługami przy użyciu instrukcji SEND Transact-SQL. Konwersacja to kanał komunikacyjny ustanowiony między usługami przy użyciu instrukcji BEGIN DIALOG
Transact-SQL.
DECLARE @dialog_handle UNIQUEIDENTIFIER;
BEGIN DIALOG @dialog_handle
FROM SERVICE ExpensesClient
TO SERVICE 'ExpensesService';
SEND ON CONVERSATION @dialog_handle (@Message) ;
Wiadomość zostanie wysłana do ExpensesService
i umieszczona w dbo.ExpenseQueue
. Ponieważ nie ma procedury aktywacji skojarzonej z tą kolejką, komunikat pozostanie w kolejce, dopóki ktoś go nie odczyta.
Przetwarzanie komunikatów
Komunikaty umieszczone w kolejce można wybrać przy użyciu standardowego zapytania SELECT
. Instrukcja SELECT
nie zmodyfikuje kolejki i nie usunie komunikatów. Aby odczytać i ściągnąć komunikaty z kolejki, możesz użyć instrukcji RECEIVE Transact-SQL.
RECEIVE conversation_handle, message_type_name, message_body
FROM ExpenseQueue;
Po przetworzeniu wszystkich komunikatów z kolejki należy zamknąć konwersację za pomocą instrukcji END CONVERSATION Transact-SQL.
Gdzie znajduje się dokumentacja usługi Service Broker?
Dokumentacja referencyjna usługi Service Broker jest zawarta w dokumentacji programu SQL Server. Ta dokumentacja referencyjna zawiera następujące sekcje:
Instrukcje języka definicji danych (DDL) (Transact-SQL) dla instrukcji CREATE, ALTER i DROP
Widoki katalogu Service Broker (Transact-SQL)
dynamiczne widoki zarządzania związane z brokerem usług (Transact-SQL)
Zapoznaj się z wcześniej opublikowaną dokumentacją dotyczącą pojęć związanych z usługą Service Broker oraz zadań związanych z rozwijaniem i zarządzaniem. Ta dokumentacja nie jest odtwarzana w dokumentacji programu SQL Server ze względu na niewielką liczbę zmian w usłudze Service Broker w ostatnich wersjach programu SQL Server.
Co nowego w usłudze Service Broker
Broker usług i zarządzana instancja Azure SQL
Wymiana komunikatów między wystąpieniami usługi Azure SQL Managed Instance oraz wymiana komunikatów między serwerem SQL Server a wystąpieniem Azure SQL Managed Instance jest obecnie dostępna w publicznej wersji ewaluacyjnej.
-
CREATE ROUTE
: Określony port musi mieć wartość 4022. Zobacz STWÓRZ TRASĘ. -
ALTER ROUTE
: Określony port musi mieć wartość 4022. Zobacz ALTER ROUTE.
Zabezpieczenia transportu są obsługiwane, zabezpieczenie dialogu nie jest obsługiwane.
-
CREATE REMOTE SERVICE BINDING
nie jest obsługiwana.
Broker usługi jest domyślnie włączony i nie można go wyłączyć. Następujące opcje ALTER DATABASE nie są obsługiwane:
ENABLE_BROKER
DISABLE_BROKER
Nie wprowadzono żadnych znaczących zmian w programie SQL Server 2019 (15.x). W programie SQL Server 2012 wprowadzono następujące zmiany (11.x).
Komunikaty mogą być wysyłane do wielu usług docelowych (multiemisji)
Składnia instrukcji SEND (Transact-SQL) została rozszerzona, aby umożliwić multiemisję przez obsługę wielu uchwytów konwersacji.
Kolejki uwidaczniają czas kolejkowania komunikatu
Kolejki mają nową kolumnę message_enqueue_time, która pokazuje, jak długo wiadomość znajduje się w kolejce.
Można wyłączyć obsługę komunikatów zatrutych
Instrukcje CREATE QUEUE (Transact-SQL) i ALTER QUEUE (Transact-SQL) mogą teraz włączać lub wyłączać obsługę wiadomości zatruwających poprzez dodanie klauzuli POISON_MESSAGE_HANDLING (STATUS = ON | OFF)
. Widok wykazu sys.service_queues zawiera teraz kolumnę is_poison_message_handling_enabled wskazującą, czy komunikat o truciznie jest włączony, czy wyłączony.
Obsługa funkcji Always On w usłudze Service Broker
Aby uzyskać więcej informacji, zobacz Broker Usług z grupami dostępności Always On (SQL Server).
Następne kroki
Najczęstszym zastosowaniem usługi Service Broker jest powiadomienia o zdarzeniach. Dowiedz się, jak zastosować powiadomienia o zdarzeniach, skonfigurować zabezpieczenia okna dialogowegolub uzyskać więcej informacji.