서비스 브로커 및 통보 서비스 강사: 정 홍 주 ㈜웹타임 수석 컨설턴트
목차 서비스 브로커 통보 서비스 서비스 지향 아키텍쳐 서비스 브로커 시스템 아키텍쳐 서비스 브로커 Conversation 아키텍쳐 서비스 브로커 이용 통보 서비스 통보 서비스 아키텍처 통보 서비스 데모
서비스 지향 아키텍처 서비스간의 느슨하게 결합된 통신 서비스 지향 아키텍처의 예: Message Queuing Web Services Message Queuing
Service Broker 시스템 아키텍처 SQL Server 개체 설 명 Message Type 서비스간의 교환에 사용되는 유효한 메시지를 정의 Contract 메시지 타입을 지정하고 conversation 에서 방향(initiator, target) Queue 메시지를 결과 셋으로 보내기 전과 받은 후에 저장 Service Program Queue에서 메시지를 읽고 처리하는 service broker 응용프로그램의 일부분 Service 서비스 통신을 위한 접근할 수 있는 종단점 Message type Queue Contract Service Service program
Service Broker Conversation 아키텍처 구조 설 명 Dialog 두 서비스에 의해 메시지를 보내고 받는 Conversation 은 정확히 순서대로 한번에 처리되게 함. 명시적으로 끝나고 에러가 발생될 때까지 계속 Service Instance unique identifier 로 관련 conversation의 그룹을 식별 단지 한 service program 한번에 같은 service instance identifier 가진 메세지를 읽음 Route 다른 SQL Server instance간의 conversation 네트워크 주소와 서비스 이름의 조합 Remote Service Binding 원격 서비스의 이름과 로컬 데이터베이스 사용자과 연계
Service Broker 이용 데이터 베이스에서 Service Broker 설정 서비스 구현 Contract 생성 Queue 생성 Service 생성 메시지 송신 메시지 수신
데이터 베이스에서 Service Broker 설정 SELECT is_broker_enabled FROM sys.databases WHERE database_id = db_id() ALTER DATABASE AdventureWorks SET ENABLE_BROKER
Contract 생성 message type 생성 Contract 생성 CREATE MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] VALIDATION = WELL_FORMED_XML [//Adventure-Works.com/Expenses/ClaimResponse] VALIDATION = VALID_XML WITH SCHEMA COLLECTION awschemas CREATE CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] ( [//Adventure-Works.com/Expenses/ExpenseClaim] SENT BY INITIATOR, [// Adventure-Works.com/Expenses/ClaimResponse] SENT BY TARGET )
Queue 생성 활성화 매개변수 지정 CREATE QUEUE ExpenseQueue CREATE QUEUE ExpenseQueueWithActivation WITH STATUS = OFF, ACTIVATION ( PROCEDURE_NAME = ProcessExpense, MAX_QUEUE_READERS = 5, EXECUTE AS SELF)
Service 생성 CREATE SERVICE [//Adventure-Works.com/SubmitExpense] ON QUEUE ExpenseQueue ( [//Adventure-Works.com/Expenses/ProcessExpense] )
메시지 송신 메시지 송신 dialog handle 변수 정의 dialog conversation 시작 DECLARE @dialog_handle uniqueidentifier BEGIN DIALOG CONVERSATION @dialog_handle FROM SERVICE [//Adventure-Works.com/SubmitExpense] TO SERVICE '//Adventure-Works.com/ProcessExpense' ON CONTRACT [//Adventure-Works.com/Expenses/ProcessExpense] ;SEND ON CONVERSATION @dialog_handle MESSAGE TYPE [//Adventure-Works.com/Expenses/ExpenseClaim] (@msgString) 메시지 송신
메시지 수신 메시지 저장할 변수 정의 RECEIVE 구문 호출 message type 확인, 순서대로 처리 Conversation 끝나면, END CONVERSATION 호출 DECLARE @conversation UNIQUEIDENTIFIER DECLARE @msg NVARCHAR(MAX), @msgType NVARCHAR(256) ;RECEIVE TOP(1) @conversation = conversation_handle, @msgType = message_type_name, @msg = message_body FROM ExpenseQueue IF (@msgType = '//Adventure-Works.com/Expenses/ExpenseClaim') -- process @msg … END CONVERSATION @conversation
데모 : 서비스 브로커 메시지 송수신
목차 서비스 브로커 통보 서비스 서비스 지향 아키텍쳐 서비스 브로커 시스템 아키텍쳐 서비스 브로커 Conversation 아키텍쳐 서비스 브로커 이용 통보 서비스 통보 서비스 아키텍처 통보 서비스 데모
통보 서비스 아키텍처 인스턴스 인스턴스 데이터베이스 응용 프로그램 응용 프로그램 데이터베이스 하나의 인스턴스는 여러 개의 응용 프로그램을 포함 인스턴스 서비스와 데이터베이스는 구성파일로 정의 응용 프로그램 데이터베이스는 ADF(Application Definition File)로 정의 인스턴스 Config 윈도우 서비스 인스턴스 데이터베이스 응용 프로그램 응용 프로그램 ADF ADF 데이터베이스 데이터베이스
구성파일 Parameters File documentation Instance settings Application settings Protocol settings Delivery channels Argument encryption
ADF(Application Definition File)파일 Parameters File documentation Database settings Event classes Subscription classes Notification classes Provider settings Generator settings Distributor settings Application execution settings
Subscription Management Objects 구독 관리 Subscription Management Object 관리,COM API 구독자 구독자 Subscription Management Objects 구독자 장치 구독 인스턴스 데이터베이스 응용프로그램 데이터베이스
이벤트 수집 표준, 커스텀 이벤트 제공자 이벤트 .NET XML SQL 응용프로그램 데이터베이스 SP COM
이벤트 제공자 표준 제공자 커스텀 제공자 API FileSystemWatcher SQL Server Managed event API COM event API XML event API SQL Server event API
통보 생성 Generator ADF에 있는 규칙 실행 통보 table 저장 1 Generator 규칙 2 통보 응용프로그램 SELECT… 응용프로그램 데이터베이스 1 2
통보 포맷팅 및 전달 배포자 적절한 formatter 적용 배포자는 전달 채널로 통보를 전송 컨텐츠 Formatter SMTP 전달 채녈 HTTP FILE 응용프로그램 데이터베이스 1 2 배포자
데모 : 통보 서비스 메시지 전송
STEP 요약 서비스 브로커 (Service Broker) 통보 서비스 (Notification Service) 서비스 브로커 아키텍처 서비스 지향 아키텍처 서비스 브로커 개요 서비스 브로커 대화 프로세스 서비스 브로커 구현 서비스 브로커 활성화 Message Type Contract Queue Service 메시지 송,수신 통보 서비스 (Notification Service) 통보 서비스 아키텍처 구독, 이벤트, 통보 처리 통보 서비스 데모