Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Групи за разговори на Sql Server Service Broker

Групите за разговори са локален примитив, използван за заключване. Съобщенията в рамките на група за разговори нямат гаранции за ред и групите за разговори не преминават през кабела.

Редът на съобщенията се гарантира от Service Broker в рамките на разговор. Така че, за да запазите реда на корелирани съобщения в обработката, изпратете ги в същия разговор.

Групите за разговори са необходими за групиране на набор от разговори, които са свързани един с друг. И двете GET CONVERSATION GROUP и RECEIVE глаголите гарантират, че ще заключат цяла група за преобразуване, като по този начин не позволяват на всяка друга нишка да обработва свързани съобщения. Например помислете за сайт за пътуване. Получава съобщение със заявка за резервация на ваканционен пакет. В резултат на това той инициира разговор с услуга за резервации на хотел и изпраща заявка за резервация на стая, инициира разговор с услуга за резервации на авиокомпания и иска резервация за пътуване, инициира разговор с услуга на агенция за коли под наем и иска резервация на кола. Тези три нови разговора, които той създаде, са в една и съща група с първоначалния разговор, в който е получена заявката (приложението е използвало WITH RELATED_CONVERSATION клауза на BEGIN DIALOG за всичките 3 от тях). След това се ангажира и продължава да обработва съобщенията в опашката. По-късните отговори от тези 3 корелирани заявки започват да идват в доста произволни моменти. Кажете, че отговорът на хотела идва на първо място. Съобщението се прихваща от приложението и продължава да актуализира състоянието на заявката с отговора от хотела. В същото време идва отговорът на авиокомпанията. Ако на друга нишка бъде позволено да я вземе, тя ще се опита да актуализира състоянието на същата заявка, което води до блокиране или дори блокиране на нишката, която обработва отговора на хотела. Когато отговорът на хотела бъде обработен, нишката се ангажира и по този начин отключва цялата група за разговори, позволявайки на всяка нишка (включително самата нея) да вземе отговора на авиокомпанията и да го обработи.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Връщане на привилегии на таблица от свързан сървър в SQL Server (T-SQL примери)

  2. Как да актуализирам колоната за самоличност в SQL Server?

  3. Пълно ръководство за коригиране на грешка в SQL база данни 5243

  4. Как езиковите настройки могат да повлияят на вашите FORMAT() резултати в SQL Server (T-SQL примери)

  5. Как да създадете композитен външен ключ в SQL Server (пример за T-SQL)