Udostępnij za pośrednictwem


Broker Usług

Dotyczy:programu SQL ServerAzure 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.

broker usług

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:

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.