KR20060079078A - 서버 큐잉 시스템 및 방법 - Google Patents

서버 큐잉 시스템 및 방법 Download PDF

Info

Publication number
KR20060079078A
KR20060079078A KR1020050107407A KR20050107407A KR20060079078A KR 20060079078 A KR20060079078 A KR 20060079078A KR 1020050107407 A KR1020050107407 A KR 1020050107407A KR 20050107407 A KR20050107407 A KR 20050107407A KR 20060079078 A KR20060079078 A KR 20060079078A
Authority
KR
South Korea
Prior art keywords
message
group
received
message group
messages
Prior art date
Application number
KR1020050107407A
Other languages
English (en)
Inventor
치-젠 황
잭 마이클 키르스테인
프라딥 가나파티라즈
샤리 클레이풀
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20060079078A publication Critical patent/KR20060079078A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Abstract

큐잉 서버는 하나의 서브시스템이 하나 이상의 순서화된 동작을 비동기적으로 수행하도록 요구되는 곳에서 신뢰성있는 메시지 전송에 이용된다. 메시지들은 하나 이상의 메시지를 가질 수 있는 그룹으로 큐에 전송된다. 특정한 그룹내의 메시지들은 사전설정된 순서대로 프로세싱된다. 선택에 따라서, 메시지 그룹들은 특정한 상관관계인 모든 그룹이 사전설정된 순서대로 프로세싱될 수 있도록 상관있게 표시될 수 있다. 메시지는 그 프로세싱이 완료될 때까지 SQL 데이터베이스 테이블에 저장될 수 있다. 메시지 시스템의 수신측은 다수의 기계들 및/또는 임의의 주어진 기계의 가용 자원에 따라 스케일될 수 있다. 이 시스템은 송신측의 "오작동" 시나리오(즉, 송신 기계가 한 그룹의 전송중에 고장) 및 수신측의 "오작동" 시나리오(즉, 정전이 수신 기계들 중 적어도 한곳에서 재시동 야기) 모두를 처리할 수 있다.
큐잉 시스템, 메시지 그룹, 상관 식별자, 연관 그룹, SQL 테이블

Description

서버 큐잉 시스템 및 방법{SERVER QUEUING SYSTEM AND METHOD}
도 1은 본 발명의 하나의 실시예에 따라 이용될 수 있는 연산 장치를 도시하는 도면.
도 2는 본 발명의 여러 측면들에 따라 신뢰성있는 메시지 전송을 위한 큐잉 시스템의 블록도.
도 3은 본 발명의 여러 측면들에 따라 후속 가용 그룹을 획득하기 위한 프로세스를 도시하는 동작 순서도.
도 4는 본 발명의 여러 측면들에 따라 수신기 및 워커 스레드를 이용하기 위한 프로세스를 도시하는 동작 순서도.
도 5는 본 발명의 여러 측면들에 따라 메시지 프로세싱 워커 스레드를 이용하기 위한 프로세스를 도시하는 동작 순서도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 연산 장치 102 : 프로세싱 유닛
104 : 시스템 메모리 107 : 프로그램 데이터
108 : 서버 큐잉 시스템 250, 252, 254 : 송신 서브시스템 클라이언트
260 , 262, 264 : 수신 서브시스템 클라이언트
230 : 메시지 큐 240 : 그룹 큐
본 발명은 서버 큐잉 시스템 및 방법에 관한 것이다.
큐잉 시스템은 여러 상이한 사용자(및/또는 프로세스)가 수신 서브시스템의 추후 사용을 위해 큐인 상태로 저장될 데이터 및/또는 프로세싱 요청을 전송하게 한다. 예컨대, 프로젝트 서버 서브시스템은 하나 이상의 메시지를 큐잉 시스템에 전송할 수 있다. 큐잉 시스템은 수신 서브시스템이 저장 정보를 검색 및 프로세싱할 수 있을 때까지 이 정보를 저장한다. 하지만, 서브시스템과 큐잉 시스템 간의 기계 오작동 및 통신 중단은 프로세싱시 에러를 야기하고/하거나 저장 정보의 프로세싱을 불가능하게 할 수 있다.
본 발명은 신뢰성 있게 메시지를 전송하기 위한 서버 큐잉 방법 및 시스템에 관한 것이다. 큐잉 서버는 예를 들어 하나의 서브시스템이 하나 이상의 순서 있는 동작을 비동기적으로 수행하도록 요구되는 곳에서 이용될 수 있다. 메시지는 하나 이상의 메시지를 가질 수 있는 그룹으로 큐에 전송된다. 특정한 그룹내의 메시지는 사전설정된 순서대로 프로세싱된다. 메시지 그룹들은 특정한 상관관계인 모든 그룹이 사전설정된 순서대로 프로세싱될 수 있도록 상관 있게 표시될 수 있다. 메시지는 그 프로세싱이 완료될 때까지 SQL 데이터베이스 테이블에 저장될 수 있다. 메시지 시스템의 수신측은 다수의 기계 및/또는 임의의 주어진 기계의 가용 자원에 따라 스케일될 수 있다. 이 시스템은 송신측의 "오작동" 시나리오(즉, 송신 기계가 한 그룹의 전송중에 고장) 및 수신측의 "오작동" 시나리오(즉, 정전이 수신 기계들 중 적어도 한곳에서 재시동 야기) 모두를 처리할 수 있다.
본 발명의 한가지 측면에 있어서, 큐잉 시스템은 송신기 서브시스템으로부터 전송된 메시지 그룹들을 수신하는데, 각각의 메시지 그룹은 적어도 하나의 메시지를 포함한다. 수신된 메시지 그룹은 큐잉 시스템을 이용하여 사전설정된 순서대로 저장된다. 큐잉 시스템은 각각의 메시지 그룹에 관한 상관 식별자를 수신하고, 이 수신된 상관 식별자는 큐잉 시스템을 이용하여 저장된다. 저장된 메시지 그룹 및 상관 식별자는 사전설정된 순서대로 전송된다.
본 발명은 신뢰성 있게 메시지를 전송하기 위한 서버 큐잉 방법 및 시스템에 관한 것이다. 큐잉 서버는 예를 들어 하나의 서브시스템이 하나 이상의 순서 있는 동작을 비동기적으로 수행하도록 요구되는 곳에서 이용될 수 있다. 메시지는 하나 이상의 메시지를 가질 수 있는 그룹으로 큐에 전송된다. 특정한 그룹내의 메시지는 사전설정된 순서대로 프로세싱된다. 메시지 그룹들은 특정한 상관관계인 모든 그룹이 사전설정된 순서대로 프로세싱될 수 있도록 상관 있게 표시될 수 있다. 메시지는 그 프로세싱이 완료될 때까지 SQL 데이터베이스 테이블에 저장될 수 있다. 메시지 시스템의 수신측은 다수의 기계 및/또는 임의의 주어진 기계의 가용 자원에 따라 스케일될 수 있다. 이 시스템은 송신측의 "오작동" 시나리오(즉, 송신 기계가 한 그룹의 전송중에 고장) 및 수신측의 "오작동" 시나리오(즉, 정전이 수신 기 계들 중 적어도 한곳에서 재시동 야기) 모두를 처리할 수 있다.
동작 환경 예시
도 1을 참조하면, 본 발명을 구현하기 위한 하나의 시스템 예는 연산 장치(100)와 같은 연산 장치를 포함한다. 연산 장치(100)는 네트워크 기반 공동 시스템에서 데이터와 상호작용하는 클라이언트, 서버, 이동 장치 혹은 임의의 다른 연산 장치로 구성될 수 있다. 매우 기본적인 구성에 있어서, 연산 장치(100)는 일반적으로 적어도 하나의 프로세싱 유닛(102) 및 시스템 메모리(104)를 포함한다. 연산 장치의 적확한 구성 및 유형에 따라, 시스템 메모리(104)는 (RAM과 같은) 휘발성, (ROM, 플래시 메모리 등과 같은) 비휘발성 또는 이 둘의 일정한 조합일 수 있다. 시스템 메모리(104)는 일반적으로 운영 시스템(105), 하나 이상의 애플리케이션(106)을 포함하고, 프로그램 데이터(107)를 포함할 수도 있다. 상세히 후술하는 서버 큐잉 시스템(108)은 일반적으로 애플리케이션(108)내에서 구현된다.
연산 장치(100)는 추가적인 특성 또는 기능을 가질 수 있다. 예컨대, 연산 장치(100)는 예를 들어 자기 디스크, 광학 디스크 또는 테이프와 같은 (이동 및/또는 비이동) 추가 데이터 저장 장치를 또한 포함할 수 있다. 이러한 추가 저장은 이동 저장 장치(109) 및 비이동 저장 장치(110)로 도 1에 도시되어 있다. 컴퓨터 저장 매체는 컴퓨터 판독 명령, 데이터 구조, 프로그램 모듈 또는 그 밖의 데이터와 같은 정보의 저장을 위해 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동 및 비이동 매체를 포함할 수 있다. 시스템 메모리(104), 이동 저장 장치(109) 및 비이동 저장 장치(110)는 모두 컴퓨터 저장 매체의 예들이다. 컴퓨터 저 장 매체는 원하는 정보를 저장하는데 이용될 수 있고 또한 연산 장치(100)에 의해 액세스될 수 있는 RAM, ROM, EEPROM, 플래시 메모리 또는 그 밖의 메모리 기술, CD-ROM, DVD 또는 그 밖의 광학 저장, 자기 카세트, 자기 테이프, 자기 디스크 저장 또는 그 밖의 자기 저장 장치 또는 임의의 다른 매체를 포함하는데, 이에 국한되지는 않는다. 임의의 이러한 컴퓨터 저장 매체는 장치(100)의 일부분일 수 있다. 또한, 연산 장치(100)는 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치 등과 같은 입력 장치(들)(112)를 구비할 수 있다. 또한, 디스플레이, 스피커, 프린터 등과 같은 출력 장치(들)(114)가 포함될 수 있다.
연산 장치(100)는 또한 네트워크와 같은 통신 접속(116)을 포함하여 이 장치가 다른 연산 장치(118)와 통신하게 한다. 네트워크는 근거리 네트워크와 원격 네트워크 뿐만 아니라 인트라넷 및 엑스트라넷을 포함하는 그 밖의 대규모 네트워크를 포함하는데, 이에 국한되지는 않는다. 통신 접속(116)은 통신 미디어의 일 예이다. 통신 미디어는 일반적으로 컴퓨터 판독 명령, 데이터 구조, 프로그램 모듈 또는 그 밖의 데이터에 의해 반송파 또는 다른 전송 메카니즘과 같은 변조된 데이터 신호로 구현될 수 있으며, 임의의 정보 전송 미디어를 포함할 수 있다. "변조된 데이터 신호"란 용어는 하나 이상의 특성 세트를 갖거나 또는 신호내의 정보를 인코딩하는 식으로 변경된 신호를 의미한다. 국한하려는 것이 아닌 단지 예시로서, 통신 미디어는 유선 네트워크 또는 직접 유선 접속과 같은 유선 미디어 및 음향, RF, 적외선 및 그 밖의 무선 미디어와 같은 무선 미디어를 포함한다. 본 명세서에서 사용되는 바와 같은 컴퓨터 판독 미디어란 용어는 저장 미디어와 통신 미디 어 모두를 포함한다.
큐잉 시스템 서버
도 2는 본 발명의 여러 측면들에 따라 신뢰성 있게 메시지를 전송하기 위한 큐잉 시스템의 블록도이다. 이 시스템 예는 큐잉 서버(200), 송신 서브시스템 클라이언트(250, 252, 254)) 및 수신 서브시스템 클라이언트(260, 262, 264)를 포함한다(본 발명에 따른 다른 시스템은 하나 이상의 송신 서브시스템 클라이언트 및/또는 하나 이상의 수신 서브시스템 클라이언트를 포함할 수 있다). 서버(210)는 메시지 그룹(210)으로 편성되는 하나 이상의 저장 메시지를 포함한다. 메시지 그룹(210)은 각각의 메시지 그룹이 그룹 큐(240)(또한, 예를 들어 SQL 테이블일 수 있는)의 엔트리와 연관되는 메시지 큐(230)(SQL 테이블과 같은)에 저장된다.
메시지 송신 :
송신 서브시스템 클라이언트(250, 252, 254)는 API(애플리케이션 프로그램 인터페이스)를 이용하여 다음에 규정된 Sender 오브젝트를 호출할 수 있다. 예컨대, 송신기 오브젝트는 다음과 같이 규정될 수 있다 :
Figure 112005064657951-PAT00001
먼저, 송신 서브시스템 클라이언트는 Sender 오브젝트를 생성한다. 구성자에 관한 파라미터는 일반적으로 (후술하는) IQueueAccess 인터페이스를 제공하는 한 클래스의 System.Type이다. 이와 다른 구성자는 메시지를 전송하는 서버 인스 턴스를 식별하는 임의 스트링일 수 있는 serverID를 택할 수도 있다. 이것은 프로젝트 서버의 하나의 인스턴스만이 주어진 기계상에서 동작하고 있다면 기계 이름이었을 수도 있다. ServerID 값은 일반적으로 송신 서브시스템 클라이언트에 의해 이용되지 않는다.
송신기 오브젝트가 구성되는 경우에, 클라이언트는 BeginMessageGroup()을 호출한다. messageType 파라미터는 공통 큐를 공유하는 상이한 유형의 메시지들을 구별하는데 이용될 수 있는 클라이언트-규정값이다. 예컨대, 메시지 유형은 Save, Publish 및 Report 메시지 유형일 수 있다. 클라이언트는 이러한 유형의 메시지들에 관한 몇몇 임의 상수를 규정할 수 있으며, 그 값은 수신측에서 적합한 메시지 처리 코드에 분기하는데 이용될 수 있다.
우선순위 파라미터는 메시지 그룹에 관한 우선순위 값을 지정하는데 이용될 수 있다. 예컨대, 수가 클수록 후순위인 식으로 "1"이란 값이 최우선순위일 수도 있다.
correlationID 파라미터는 일반적으로 개별 그룹의 메시지를 상관시키는데 이용되는 클라이언트에 의해 제공되는 GUID이다. 예컨대, 특정한 사용자로부터의 메시지(타임시트 엔트리 프로그램으로부터의 메시지와 같은)는 사전설정된 순서(수신되는 순서와 같이)대로 프로세싱된다. 각각의 타임시트 제출은 하나의 메시지 그룹으로 전송될 수 있다. correlationID는 큐잉 서버(200)에 의해 이용되어 이러한 그룹들 각각이 다수의 스레드 프로세싱 타임시트 메시지가 존재하는 경우라도 (순차적으로와 같이) 사전설정된 순서대로 프로세싱되는 것을 보장할 수 있다. 타 임시트의 예에서, correlationID값은 ResourceID일 수 있다.
BeginMessageGroup()의 복귀값은 그 그룹에 관한 UID이다. 이 UID는 메시지 그룹의 상태에 관한 조회에 이용될 수 있다.
BeginMessageGroup에 대한 호출 후에, 송신 서브시스템 클라이언트는 Send()를 이용하여 임의 개수의 메시지를 송신할 수 있다. messageBody 파라미터는 일반적으로 송신되는 메시지를 나타내는 임의 오브젝트이다. messageBody 파라미터는 메시지 데이터, 및 수신측에서 그 데이터를 프로세싱하기 위한 방법까지도 포함할 수 있다. 하지만, 임의 오브젝트는 (직렬화될 수 있는 것과 같이) 사전설정된 순서에 따라 체계화될 수 있어야 한다. 큐잉 서버(200)는 일반적으로 큐 데이터베이스 테이블에 저장하기 위한 오브젝트의 직렬화 및 비직렬화를 담당한다. 큐 데이터베이스 테이블은 메시지가 이미 이진 포맷(예컨대, 바이트 어레이)이라면, 시스템이 이 데이터를 "그대로" 데이터베이스에 기록할 수 있도록 최적화될 수 있다.
모든 메시지가 전송되었다면, 클라이언트는 EndMessageGroup()을 호출할 수 있다. EndMessageGroup()은 그 그룹을 차단하고 (후술하는) 수신 코드에 의한 프로세싱 준비가 된 것으로 그 그룹을 표시한다.
어떤 이유로 인해 미종료 그룹을 버릴 것을 원한다면, CancelMessageGroup()이 호출될 수 있다. CancelMessageGroup()은 BeginMessageGroup()에 대한 호출에 이어 전송된 모든 메시지를 큐로부터 제거하는데 이용될 수 있다. 어떠한 추가 메시지도 EndMessageGroup에 대한 호출 후에는 메시지 그룹에 추가될 수 없지만, Sender 오브젝트 그 자신은 BeginMessageGroup을 간단히 재호출하여 재사용될 수 있다. Begin/EndMessageGroup쌍 사이에 전송되는 모든 메시지에 의해 규정되는 바와 같이, 메시지 그룹은 일반적으로 EndMessageGroup이 성공적으로 호출될 때까지 프로세싱되지 않는다. 메시지 전송중의 시스템 고장의 경우에, 미완료 그룹이 큐에 남아 있을 것이다. 이 미완료 그룹은 후술하는 종결처리 프로세스에 의해 성공적으로 제거될 수 있다.
메시지 수신 :
수신기 시스템은 큐에서 메시지를 검색한 후 적합한 처리 코드를 호출하는 스레드로서 동작하도록 설계된다. 그 결과, 메시지를 처리하기 위해 코드 현상기는 일반적으로 다음의 API에 의해 규정되는 임의의 수신기 오브젝트를 이용할 필요가 없다. API는 프로젝트 서버가 개시되거나 관리자에 의해 수동 작동되는 경우에 수신 서비스를 설정하는데 이용된다. 수신기 오브젝트는 다음과 같이 규정될 수 있다 :
Figure 112005064657951-PAT00002
Receiver 오브젝트는 queueAccessType, processMessageType 및 serverID의 파라미터를 이용하여 구성된다. queueAccessType 파라미터는 IQueueAccess 인터페이스를 지원하는 오브젝트의 System.Type이고, processMessageType 파라미터는 IProcessMessage 인터페이스를 지원하는 오브젝트의 System.Type이며, serverID는 일반적으로 수신기가 속하는 서버 인스턴스를 식별하는 데 이용되는 임의 스티링이 다. 기계마다 하나의 인스턴스만이 이용된다면, 이것은 그 기계 이름일 수 있다(이러한 구성자 파라미터의 동작은 상세히 후술된다).
Receiver 오브젝트가 구성된다면, Receiver 오브젝트는 Start()를 호출하여 개시될 수 있다. 일반적으로, 수신기는 대개 스레드로 동작할 것이고, 따라서 "비동기" 파라미터는 "거짓"으로 진행하여 동기적으로 동작될 수 있을지라도 "참"일 것이다. 이와 다른 실시예들에서는 시스템이 언제나 비동기적으로 동작하도록 구현될 수 있다.
동기적 또는 비동기적으로 개시되든지 간에, 수신 서비스는 Stop()을 호출함으로써 정지될 수 있다. Stop 호출은 수신 서비스가 임의의 동작 워커 스레드를 정지시킨 후 빠져나올 것을 명령한다. Done 특성은 수신기 스레드 및, 이 수신기 스레드와 연관되는 모든 워커 스레드가 실제 완료되는 경우에 "참"으로 설정될 수 있다.
ServiceLimit는 수신기가 얼마나 많은 수의 워커 스레드를 이용할 수 있는지를 지정하는데 이용될 수 있는 읽기/쓰기 특성이다. ServiceLimit는 "1"로 디폴트값이 설정될 수 있다. ServiceLimit는 일반적으로 수신기 스레드가 동작하는 중에 변경될 수 있다.
ThreadSleepTime은 새로운 메시지에 관해 큐의 각 폴링간에 수신기 스레드가 얼마동안 정지(예컨대, 1/1000초)할지를 지정하는 읽기/쓰기 특성이다. ThreadSleepTime은 1000으로 디폴트값이 설정될 수 있는데, 이것은 1/1000초 유닛을 사용할 경우에 1초에 해당한다.
송신기 및 수신기는 일반적으로 스레딩 고려로 인해 (오브젝트 그 자신의 인스턴스 대신에) queueAccess 및 processMessageType에 관해 System.Type값을 취한다. Sender 및 Receiver가 그들이 필요로 하는 오브젝트의 인스턴스를 수용하기로 하였다면, 이러한 오브젝트는 충분히 안전한 스레드여야 할 것이고, 이것은 이러한 오브젝트가 참조되는 임의의 다른 오브젝트 또한 안전한 스레드여야 한다는 것을 의미할 것이다. 이러한 문제점을 피하기 위해, Sender 및 Receiver는 생성된 각각의 스레드에 관한 지정 오브젝트의 복사를 (지나간 System.Type 오브젝트를 이용하여) 예시한다. 따라서, IQueueAccess 또는 IProcessMessage를 제공하는 오브젝트만이 안전한 어파트먼트-스레드여야 한다(이것은 오브젝트들이 임의의 인스턴스 멤버가 아닌 고정 클래스 멤버로의 액세스를 보호해야 한다는 것을 의미한다).
메시지 프로세싱 :
수신 서비스가 시작되는 경우에, 그 수신 서비스가 취하는 파라미터들 중 하나는 IProcessMessage 인터페이스를 지원하는 오브젝트의 System.Type인데, 다음과 같이 규정된다 :
Figure 112005064657951-PAT00003
수신기 오브젝트의 워커 스레드 각각은 클라이언트 오브젝트의 인스턴스를 예시한다. 임의의 메시지가 판독되기 전에, IProcessMessage.StartMessageGroup() 이 호출된다. 이것은 메시지 그룹을 프로세싱하기 전에 필요한 임의의 초기화 또는 다른 프로세싱을 할 기회를 클라이언트에게 제공한다. 다음으로, 메시지 그룹내의 각 메시지에 관해, IProcessMessage.ProcessMessageCallback()이 호출된다.
ProcessMessageCallback의 복귀값은 메시지가 성공적으로 프로세싱되었는지를 지정한다. 복귀값이 "참"이라면, 메시지는 큐에서 갑자기 사라질 수 있다. "거짓"의 복귀값은 메시지가 실패했다는 것을 나타내며, 이 후 큐잉 시스템은 동일한 메시지로 ProcessMessageCallback을 재호출할 수 있다.
수신 스레드가 (마지막 메시지를 수신하거나 또는 제외로 인한 중단 중 어느 하나에 의해) 메시지 판독을 종료하는 경우에, IProcessMessage.EndMessageGroup()이 호출될 수 있다. 이것은 원해질 수 있는 임의의 종결처리 또는 종료할 기회를 클라이언트에게 제공한다.
Message 파라미터는 일반적으로 메시지 그 자신이다. 이러한 오브젝트는 다음의 특성들을 갖는다 :
Figure 112005064657951-PAT00004
MessageID는 메시지의 ID를 제공하는데, 이 ID는 그룹내에서 고유하다. 그룹내의 제 1 메시지는 일반적으로 하나의 ID를 가지고, 그룹내의 제 2 메시지 또한 하나의 ID를 갖는 식이다. MessageBody는 Sender.Send() 방법을 통해 처음부터 전송되는 오브젝트이다.
Group 파라미터는 그 메시지가 속하는 그룹에 관한 메타데이터를 일반적으로 포함하는 오브젝트이다. Group 파라미터는 다음의 특성들을 제공한다 :
Figure 112005064657951-PAT00005
GroupID는 그룹의 고유 식별자이다. 각각의 메시지 그룹은 고유 GroupID를 갖는다. CorrelationID는 상관된 메시지 그룹의 고유 식별자이다. 이것은 Sender.BeginMessageGroup()이 호출되는 경우에 Sender.BeginMessageGroup()에 제공되는 파라미터에 대응한다. MessageType은 메시지의 유형을 지정하는 클라이언트-규정 나열형이다. MessageType은 Sender.BeginMessageGroup()에 제공되는 파라미터에 대응한다. Priority는 그룹 우선 순위이다. Priority는 Sender.BeginMessageGroup()에 제공되는 파라미터에 대응한다. LastMessageId는 그룹내의 마지막 메시지의 MessageId를 제공한다. 따라서, msg.MessageId는 그룹내의 마지막 메시지를 직면하는 경우에 messageGroup.LastMessageId와 동일할 것이다.
MessageContext 파라미터는 그 메시지의 현재 프로세싱 상태에 관한 추가 정보를 포함할 수 있다. MessageContext 파라미터는 다음과 같이 규정될 수 있다 :
Figure 112005064657951-PAT00006
RetryCount는 특정한 메시지로 호출되어 진 ProcessMessageCallback의 횟수이다. 제 1 호출시, 그 값은 일반적으로 "1"일 것이다. GroupRetryCount는 특정 한 그룹이 프로세싱을 시도했던 횟수이다. 어떤 이유로 인해 수신기 워커 스레드가 그룹 프로세싱을 중단한다면, GroupRetryCount는 그 그룹에 대해 재시도할 것인데, 일반적으로 제 1의 프로세싱되지 않은 메시지로 시작한다. SleepBeforeRetry는 메시지 프로세싱 실패시에 그 메시지를 재시도하기 전에 워커 스레드가 얼마 동안 정지해야 하는지를 워커 스레드에 알려주는 클라이언트 설정 파라미터이다.
낮은 레벨의 큐 액세스 :
큐잉 서버(200)는 일반적으로 큐 저장 "독립매체(agnostic)"이다(즉, 이 서버는 큐 저장의 내부 작업에 독립적이다). 큐잉 서버(200)는 IQueueAccess를 지원하는 오브젝트를 통해 큐 읽기/쓰기/팝 액세스하는데, 이 System.Type은 Sender 및 Receiver 오브젝트의 구성자에 제공된다. IqueueAccess는 다음과 같이 규정될 수 있다 :
Figure 112005064657951-PAT00007
Figure 112005064657951-PAT00008
IQueueAccess의 디폴트 구현은 두 개의 SQL 테이블(예컨대, 메시지 큐(230) 및 그룹 큐(240))를 이용하여 구현될 수 있다. 하지만, 큐잉 서버(200)의 잔여부로부터 큐 액세스의 이러한 분리로 인해, 전체 시스템은 (MSMQ 또는 Yukon SSB와 같은) 임의의 적합한 저장 시스템의 상부에 구현될 수 있었다.
큐 저장 :
메시지 큐(230)는 송신 서브시스템 클라이언트로부터 전송되는 메시지의 실제 메시지 보디 데이터를 보관하는 테이블이다. 모든 Sender.Send() 호출에 대해, 하나의 행이 일반적으로 이 테이블에 추가된다. 도면이 메시지 그룹들을 서로 클러스터된 것과 같이 도시하고 있지만, 실제로는, 다수의 그룹으로부터의 메시지는 인터레이싱될 수도 있다. 메시지 큐(230)는 일반적으로 데이터 보관자 역할을 담당한다. 이러한 테이블에 대해 통상 수행되는 동작은 새로운 메시지 삽입, 프로세싱된 메시지 삭제 및 후속 메시지 선택(읽기)이다. 이러한 테이블에서의 레코드는 전술한 메시지 오브젝트에 대응한다.
도시된 실시예는 메시지 큐(230)에 관해 하나의 테이블을 도시하고 있지만, 이와 다른 실시예들은 원한다면 이 테이블을 다수의 테이블로 나눌 수도 있다. 이와 다른 실시예들은 다수의 테이블을 구현하기 위해 IQueueAccess.ReadMessage, IQueueAccess.PopMessage 및 IQueueAccess.SendMessage의 구현만을 개선하면 될 것이다. 제 2 테이블, 즉 그룹 큐(240)는 후속 그룹을 선택하고, 그룹 및 상관 로크를 프로세싱하고 관리하며, 추가 메타데이터를 보관하는 데 이용된다. 이러한 테이블에서의 레코드는 전술한 그룹 오브젝트에 대응한다. 메시지 큐(230)에서의 레코드와 그룹 큐(240)에서의 레코드 간에는 다수 대 하나인 관계가 보통이다. 메시지 큐(230)는 일반적으로 전송되는 각각의 개별 메시지에 관한 레코드를 가질 것이다. 그룹 큐(240)는 일반적으로 전송되는 각각의 메시지 그룹에 관해 하나의 레코드를 가질 것이다.
새로운 그룹을 큐에 추가 :
송신 서브시스템 클라이언트가 Sender.BeginMessageGroup()을 호출하는 경우에, 새로운 레코드가 그룹 큐에 추가된다. 이 레코드는 그룹이 완료될 때까지 어떠한 수신기도 그 그룹의 프로세싱을 시작하지 않을 것을 보장하기 위해 "송신에 관해 잠김"으로 표시된다. 클라이언트가 Sender.Send()를 임의 횟수 호출한 후에, Sender.EndMessageGroup()이 호출될 수 있는데, 이 Sender.EndMessageGroup()은 그룹 레코드를 전송되는 마지막 메시지의 ID로 갱신하며 그 그룹을 잠금해제로 표시한다.
후속 가용 그룹 획득하기 :
도 3은 본 발명의 여러 측면들에 따라 후속 가용 그룹을 획득하기 위한 프로세스를 도시하는 동작 순서도이다. 일반적으로, 이 프로세스는 그 상관 그룹(상관 ID를 공유하는 그룹들)이 수신에 관해 잠기지 않고 그 그룹이 송신에 관해 잠기지 않았으며 그 상관관계가 송신에 관해 잠긴 큐 앞에 높은 우선순위를 갖는 어떠한 그룹도 갖지 않는 최고 우선순위 그룹을 찾는다. 이 프로세스의 논리 구조는 큐잉 시스템의 이용에 따라 변할 수 있다.
이 프로세스는 블록(300)에서 개시하여, 그 상관관계가 수신에 관해 잠기지 않은 모든 그룹의 리스트가 획득되는 블록(310)으로 진행한다. 이 리스트는 특정한 메시지 그룹의 큐 위치 및 우선순위에 따라 배열될 수 있다.
블록(320)에서, 리스트가 채워져 있는지에 대한 판정이 이루어져서, 그룹이 리스트에 존재하면 블록(340)으로 진행한다. 어떠한 그룹도 리스트에 존재하지 않는다면, 프로세스는 블록(330)으로 진행하여 종료된다.
블록(340)에서, 리스트의 제 1 그룹이 획득되고, 블록(350)에서 평가되어 그 블록이 송신에 관해 잠겼는지를 판정한다. 그 블록이 송신에 관해 잠겼다면, 프로세스는 잠긴 그룹의 상관 ID를 공유하는 모든 그룹이 리스트에서 삭제되는 블록(360)으로 진행한다. 그 블록이 송신에 관해 잠기지 않았다면, 프로세스는 그 블록이 수신에 관해 잠기며 호출 프로세스에 복귀하는 블록(370)으로 진행한다.
후속 가용 그룹 획득하기 :
도 4는 본 발명의 여러 측면들에 따라 수신기 및 워커 스레드를 이용하기 위한 프로세스를 도시하는 동작 순서도이다. 일반적으로, 수신기 스레드는 가용 그룹에 관한 큐를 감시한다. 수신기 스레드는 큐 폴링을 시작하기 전에 송신에 관해 잠긴 임의의 그룹을 구성자의 serverID 파라미터에 제공된 서버 인스턴스 이름으로 먼저 잠금해제한다. 이 그룹은 종결처리/복구 프로세스를 허용하도록 잠금 해제된 다. 수신기 스레드가 (예컨대, 기계 재시동으로 인해) 비정상적으로 정지되었다면, 현재 프로세싱 중인 그룹들은 이와 달리 송신에 관해 여전히 잠겨있을 것이다. 따라서, 이러한 그룹들은 서버 인스턴스가 재시동하자마자 잠금 해제된다.
이 후에, 수신기 스레드는 가용 그룹에 관한 큐를 폴링한다. 한 그룹이 이용가능하고 워커 스레드의 수가 최대 허용치 미만인 경우에, 수신기 스레드는 이 그룹을 프로세싱하기 위해 하나의 워커 스레드를 생성할 수 있다. 이 워커 스레드가 그룹을 성공적으로 프로세싱하면, 그룹 아이템은 이 그룹 큐로부터 제거된다. 워커 스레드가 그룹을 성공적으로 프로세싱하지 못했다면, 워커 스레드는 이 그룹에 대해 재시동된다.
이 프로세스는 블록(400)에서 개시하여, 수신기가 속하고 serverID가 연관되는 서버 인스턴스에 의해 수신에 관해 잠긴 임의의 스레드가 잠금 해제되는 블록(405)으로 진행한다.
블록(410)에서, 임의의 워커 스레드가 가용인지에 관한 판정이 내려진다. 임의의 워커 스레드가 가용이면, 프로세스는 후속 가용 그룹이 획득되는 블록(415)으로 진행한다. 어떠한 워커 스레드도 가용이지 않다면, 프로세스는 워커 스레드의 상태를 검사하기 전에 대기하도록 블록(430)으로 진행한다.
블록(420)에서, 후속 가용 그룹이 획득되었는지 대한 판정이 내려진다. 후속 가용 그룹이 획득되었다면, 프로세스는 워커 스레드가 가동되는 블록(425)으로 진행한다. 워커 스레드가 가동된 후에, 프로세스는 블록(410)으로 복귀한다. 후속 가용 그룹이 획득되지 않았다면, 프로세스는 워커 스레드의 상태를 검사하기 전 에 대기하도록 블록(430)으로 진행한다.
블록(430)에서의 대기 후에, 프로세스는 워커 스레드의 상태가 검사되는 블록(435)으로 진행한다. 블록(440)에서, 후속 가용 그룹내의 모든 메시지가 프로세싱되었는지에 관한 판정이 내려진다. 후속 가용 그룹내의 모든 메시지가 프로세싱되지 않았다면, 프로세스는 워커 스레드가 재가동되는 블록(445)으로 진행한다. 후속 가용 그룹내의 모든 메시지가 프로세싱되었다면, 프로세스는 이 그룹이 그룹 큐로부터 제거되는 블록(450)으로 진행한다.
워커 스레드를 재가동하는 블록(445) 또는 그룹 큐로부터 이 그룹을 제거하는 블록(450) 후에, 프로세스는 검사할 임의의 추가 워커 스레드가 존재하는지에 대한 판정이 내려지는 블록(455)으로 진행한다. 검사할 임의의 추가 워커 스레드가 존재한다면, 프로세스는 워커 스레드의 상태가 검사되는 블록(435)으로 복귀한다. 검사할 어떠한 워커 스레드도 존재하지 않는다면, 프로세스는 임의의 워커 스레드가 가용인지에 대한 판정이 다시 한번 내려지는 블록(410)으로 복귀한다.
메시지 프로세싱 워커 스레드 :
도 5는 본 발명의 여러 측면들에 따라 메시지 프로세싱 워커 스레드를 이용하기 위한 프로세스를 도시하는 동작 순서도이다. 일반적으로, 메시지 프로세싱 워커 스레드는 루프상태로 동작한다. 메시지가 메시지 큐인 동안에, 메시지 프로세싱 워커 스레드는 메시지를 판독하고 IProcessMessage.ProcessMessageCallback()을 호출한다. 이러한 기능이 (메시지의 성공적인 프로세싱을 표시하는) "참"으로 복귀한다면, 메시지는 큐로부터 제거된다. "참"으로 복귀하지 않는다면, 메시지 프로세싱이 재시도된다.
프로세스는 개시 블록(500)에서 시작하여, 메시지가 판독되는 블록(510)으로 진행한다. 블록(520)에서, 메시지가 성공적으로 획득되었는지 대한 판정이 내려진다. 메시지가 성공적으로 획득되었다면, 프로세스는 블록(530)으로 진행한다. 메시지가 성공적으로 획득되지 않았다면, 프로세스는 블록(560)으로 진행하고 종료된다.
성공적으로 획득된 메시지는 블록(530)에서 프로세싱되고, 프로세스는 메시지가 성공적으로 프로세싱되었는지에 대한 판정이 내려지는 블록(540)으로 진행한다. 메시지가 성공적으로 프로세싱되지 않았다면, 프로세스는 획득된 메시지가 다시 프로세싱되는 블록(530)으로 복귀한다(메시지가 적합하게 프로세싱될 수 없는 경우에는 이 프로세싱을 중단시키도록 프로세스 논리내에 검사를 배치할 수 있다). 메시지가 성공적으로 프로세싱되었다면, 프로세스는 메시지가 큐에서 "팝"(즉, 제거되고 연관 포인터가 조절되는)되는 블록(550)으로 진행한다. 메시지가 팝된 후에, 프로세스는 또 하나의 메시지가 판독되는 블록(510)으로 복귀한다. 이 프로세스는 어떠한 추가 메시지도 획득되지 않을 때까지 반복되고, 어떠한 추가 메시지도 획득되지 않는다면 종료 블록(560)에서 프로세싱은 종료된다.
서브시스템 고장 복구 :
서브시스템 고장의 두 가지 경우는 수신 기계가 재시동되고 온라인상에서 복귀하는 상황 및 수신 기계가 고장나고 상당 시간내에 온라인상에서 복귀하지 않는 상황으로 모아진다(상당 시간은 고장난 기계에 의해 야기된 프로세싱 부하에 추가 기계가 할당될 수 있는 시간일 수 있다).
송신 서브시스템 고장의 복구는 그룹 큐(240)에서의 그룹 엔트리를 수신에 관해 잠기는 경우에 수신기의 인스턴스 이름(구성자에 대한 serverID 파라미터)으로 표시하여 가능해진다. 재시동 시나리오에 있어서, 수신 서비스의 재시동시 첫 번째 행동은 일반적으로 수신에 관해 잠긴 임의의 그룹을 이러한 인스턴스로 잠금 해제하는 것이다. 이 후, 이 그룹은 임의의 가용 수신 서비스에 의해 선택되어 프로세싱될 수 있다.
수신 서브시스템이 고장나고 상당 시간내에 복귀하지 않는 경우에는, (송신기 고장의 경우에서와 같이) 수신에 관해 부실하다고 표시되는 하나 이상의 그룹이 보통 존재할 것이다. 이런 경우에 대한 종결처리는 그 그룹을 잠금 해제함으로써 달성된다. 이 그룹은 잠금 해제되자마자 프로세싱 지속을 위해 메시지 프로세싱 스레드에 의해 선택될 수 있다.
본 명세서, 전술한 예들 및 데이터는 본 발명의 구성을 이용 및 제조하는 완전한 설명을 제공한다. 본 발명의 수많은 실시예들이 본 발명의 사상 및 범주를 벗어나지 않고서 구현될 수 있으며, 본 발명은 첨부한 청구범위에 의해 특징지어 진다.
본 발명은 신뢰성 있게 메시지를 전송하기 위한 서버 큐잉 방법 및 시스템에 관한 것으로, 메시지 그룹들은 특정한 상관관계인 모든 그룹이 사전설정된 순서대로 프로세싱될 수 있도록 상관 있게 표시되고 프로세싱이 완료될 때까지 SQL 데이 터베이스 테이블에 저장되어, 송신측의 오작동 시나리오 및 수신측의 오작동 시나리오 모두를 처리할 수 있는 효과가 있다.

Claims (20)

  1. 메시지를 큐잉하기 위한 컴퓨터 구현 방법에 있어서,
    송신기 서브시스템으로부터 전송되는 메시지 그룹 - 각각의 메시지 그룹은 적어도 하나의 메시지를 포함함 - 을 큐잉 시스템에서 수신하는 단계와,
    상기 큐잉 시스템을 이용하여 상기 수신된 메시지 그룹을 사전설정된 순서대로 저장하는 단계와,
    각각의 메시지 그룹에 관한 상관 식별자 - 상기 상관 식별자는 메시지 그룹을 연관시키는 데 이용됨 - 를 상기 큐잉 시스템에서 수신하는 단계와,
    상기 큐잉 시스템을 이용하여 상기 수신된 상관 식별자를 저장하는 단계와,
    상기 사전설정된 순서 및 상기 상관 식별자에 따라 상기 저장된 메시지 그룹을 전송하는 단계를 포함하는 컴퓨터 구현 방법.
  2. 제 1 항에 있어서,
    상기 수신된 메시지 그룹은 SQL 테이블에 저장되는 컴퓨터 구현 방법.
  3. 제 1 항에 있어서,
    상기 저장된 메시지 그룹은 다수의 기계에 전송되는 컴퓨터 구현 방법.
  4. 제 1 항에 있어서,
    우선순위 값이 각각의 수신된 메시지 그룹과 연관되는 컴퓨터 구현 방법.
  5. 제 4 항에 있어서,
    상기 메시지 그룹은 상기 연관된 우선순위 값에 따라 전송되는 컴퓨터 구현 방법.
  6. 제 1 항에 있어서,
    GUID가 상기 상관 식별자로 이용되는 컴퓨터 구현 방법.
  7. 제 6 항에 있어서,
    상기 GUID는 클라이언트에 의해 제공되는 컴퓨터 구현 방법.
  8. 제 1 항에 있어서,
    상기 사전설정된 순서는 상기 메시지 그룹이 수신되는 순서인 컴퓨터 구현 방법.
  9. 제 1 항에 있어서,
    연관 그룹의 최종 메시지 그룹이 상기 연관 그룹의 임의의 저장 메시지 그룹을 전송하기 전에 수신되는 컴퓨터 구현 방법.
  10. 제 1 항에 있어서,
    상기 상관 식별자에 의해 연관되는 수신 메시지 그룹을 전송에 관해 잠그는 단계 및 상기 상관 식별자에 의해 연관되는 최종 메시지 그룹이 수신되는 경우에 상기 수신 메시지 그룹을 전송에 관해 잠금 해제하는 단계를 더 포함하는 컴퓨터 구현 방법.
  11. 메시지를 큐잉하기 위한 시스템에 있어서,
    송신기 서브시스템으로부터 전송되는 메시지 그룹 - 각각의 메시지 그룹은 적어도 하나의 메시지를 포함함 - 을 큐잉 시스템에서 전송하기 위한 수단과,
    상기 큐잉 시스템을 이용하여 상기 수신된 메시지 그룹을 사전설정된 순서대로 저장하기 위한 수단과,
    각각의 메시지 그룹에 관한 상관 식별자 - 상기 상관 식별자는 메시지 그룹을 연관시키는 데 이용됨 - 를 상기 큐잉 시스템에서 수신하기 위한 수단과,
    상기 큐잉 시스템을 이용하여 상기 수신된 상관 식별자를 저장하기 위한 수단 및
    상기 사전설정된 순서 및 상기 상관 식별자에 따라 상기 저장된 메시지 그룹을 전송하기 위한 수단을 포함하는 메시지 큐잉 시스템.
  12. 제 11 항에 있어서,
    상기 수신된 메시지 그룹은 SQL 테이블에 저장되는 메시지 큐잉 시스템.
  13. 제 11 항에 있어서,
    상기 저장된 메시지 그룹은 다수의 기계에 전송되는 메시지 큐잉 시스템.
  14. 제 11 항에 있어서,
    우선순위 값이 각각의 수신된 메시지 그룹과 연관되는 메시지 큐잉 시스템.
  15. 제 14 항에 있어서,
    상기 메시지 그룹은 상기 연관된 우선순위 값에 따라 전송되는 메시지 큐잉 시스템.
  16. 메시지 큐잉 시스템을 관리하기 위한 컴퓨터 실행 가능 명령을 구비하는 컴퓨터 판독 매체에 있어서,
    송신기 서브시스템으로부터 전송되는 메시지 그룹 - 각각의 메시지 그룹은 적어도 하나의 메시지를 포함함 - 을 큐잉 시스템에서 수신하는 명령과,
    상기 큐잉 시스템을 이용하여 상기 수신된 메시지 그룹을 사전설정된 순서대로 저장하는 명령과,
    각각의 메시지 그룹에 관한 상관 식별자 - 상기 상관 식별자는 메시지 그룹을 연관시키는 데 이용됨 - 를 상기 큐잉 시스템에서 수신하는 명령과,
    상기 큐잉 시스템을 이용하여 상기 수신된 상관 식별자를 저장하는 명령과,
    상기 사전설정된 순서 및 상기 상관 식별자에 따라 상기 저장된 메시지 그룹을 전송하는 명령을 포함하는 컴퓨터 판독 매체.
  17. 제 16 항에 있어서,
    GUID가 상기 상관 식별자로 이용되는 컴퓨터 판독 매체.
  18. 제 16 항에 있어서,
    상기 사전설정된 순서는 상기 메시지 그룹이 수신되는 순서인 컴퓨터 판독 매체.
  19. 제 16 항에 있어서,
    연관 그룹의 최종 메시지 그룹이 상기 연관 그룹의 임의의 저장 메시지 그룹을 전송하기 전에 수신되는 컴퓨터 판독 매체.
  20. 제 16 항에 있어서,
    상기 상관 식별자에 의해 연관되는 수신 메시지 그룹을 전송에 관해 잠그는 명령 및 상기 상관 식별자에 의해 연관되는 최종 메시지 그룹이 수신되는 경우에 상기 수신 메시지 그룹을 전송에 관해 잠금 해제하는 명령을 더 포함하는 컴퓨터 판독 매체.
KR1020050107407A 2004-12-30 2005-11-10 서버 큐잉 시스템 및 방법 KR20060079078A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/026,501 2004-12-30
US11/026,501 US7502843B2 (en) 2004-12-30 2004-12-30 Server queuing system and method

Publications (1)

Publication Number Publication Date
KR20060079078A true KR20060079078A (ko) 2006-07-05

Family

ID=36097085

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050107407A KR20060079078A (ko) 2004-12-30 2005-11-10 서버 큐잉 시스템 및 방법

Country Status (7)

Country Link
US (2) US7502843B2 (ko)
EP (1) EP1696611B1 (ko)
JP (1) JP4993905B2 (ko)
KR (1) KR20060079078A (ko)
CN (1) CN1798111B (ko)
AT (1) ATE446633T1 (ko)
DE (1) DE602005017242D1 (ko)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421501B2 (en) * 2005-02-04 2008-09-02 Microsoft Corporation Queued sessions for communicating correlated messages over a network
JP4790377B2 (ja) * 2005-11-07 2011-10-12 株式会社日立製作所 ストレージサブシステムのボリューム複製方法
US20080052397A1 (en) 2006-08-24 2008-02-28 Ramanathan Venkataraman Future locking of resources
US8898325B2 (en) * 2007-03-06 2014-11-25 Trion Worlds, Inc. Apparatus, method, and computer readable media to perform transactions in association with participants interacting in a synthetic environment
US9104962B2 (en) * 2007-03-06 2015-08-11 Trion Worlds, Inc. Distributed network architecture for introducing dynamic content into a synthetic environment
US7921427B2 (en) * 2007-03-27 2011-04-05 Oracle America, Inc. Method and system for processing messages in an application cluster
US7818426B2 (en) * 2007-03-27 2010-10-19 Oracle America, Inc. Method and system for processing a message by a message provider
US8954994B2 (en) * 2007-04-23 2015-02-10 Oracle International Corporation System and method for message service with unit-of-order
US9384159B2 (en) * 2007-05-24 2016-07-05 International Business Machines Corporation Creating a checkpoint for a software partition in an asynchronous input/output environment
US8505030B2 (en) * 2007-11-16 2013-08-06 Microsoft Corporation Coordinating resources using a volatile network intermediary
US8719841B2 (en) * 2007-11-16 2014-05-06 Microsoft Corporation Dispatch mechanism for coordinating application and communication medium state
US9021503B2 (en) * 2007-11-16 2015-04-28 Microsoft Technology Licensing, Llc Coordinating application state and communication medium state
US8220002B2 (en) * 2008-01-25 2012-07-10 Microsoft Corporation Isolation of user-interactive components
JP5206268B2 (ja) * 2008-09-17 2013-06-12 富士通株式会社 ルール作成プログラム、ルール作成方法及びルール作成装置
US8626863B2 (en) * 2008-10-28 2014-01-07 Trion Worlds, Inc. Persistent synthetic environment message notification
US8694585B2 (en) * 2009-03-06 2014-04-08 Trion Worlds, Inc. Cross-interface communication
US8661073B2 (en) * 2009-03-06 2014-02-25 Trion Worlds, Inc. Synthetic environment character data sharing
US8657686B2 (en) * 2009-03-06 2014-02-25 Trion Worlds, Inc. Synthetic environment character data sharing
ES2520941T3 (es) 2009-05-18 2014-11-12 Amadeus S.A.S. Método y sistema para gestionar el orden de mensajes
US8214515B2 (en) * 2009-06-01 2012-07-03 Trion Worlds, Inc. Web client data conversion for synthetic environment interaction
US8301706B2 (en) 2009-06-15 2012-10-30 Microsoft Corporation Routing of pooled messages via an intermediary
US8549538B2 (en) * 2010-03-18 2013-10-01 Microsoft Corporation Coordinating communication medium state for subtasks
US8250234B2 (en) 2010-04-26 2012-08-21 Microsoft Corporation Hierarchically disassembling messages
US8856364B2 (en) * 2011-03-11 2014-10-07 Google Inc. Conducting opportunistic network updates on a mobile device
US8775923B1 (en) * 2011-09-26 2014-07-08 Google Inc. Web page restoration
CN103428072B (zh) * 2012-05-23 2017-03-08 北京大学 一种持久化消息的发布方法及系统
US9654408B2 (en) * 2013-11-06 2017-05-16 Amazon Technologies, Inc. Strict queue ordering in a distributed system
US9961034B2 (en) 2015-06-01 2018-05-01 International Business Machines Corporation Prioritization of lock allocation
US10382380B1 (en) 2016-11-17 2019-08-13 Amazon Technologies, Inc. Workload management service for first-in first-out queues for network-accessible queuing and messaging services
FR3067490B1 (fr) * 2017-06-08 2023-04-28 Amadeus Sas TRAITEMENT DE MESSAGES MULTlNORMES
AU2018280855B2 (en) * 2017-06-08 2021-09-09 Amadeus S.A.S. Multi-standard message processing
US10284515B2 (en) 2017-06-08 2019-05-07 Amadeus S.A.S. Multi-standard message processing
CN107590072B (zh) * 2017-08-30 2020-08-18 深圳乐信软件技术有限公司 一种应用开发和测试的方法和装置

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261069A (en) * 1990-08-13 1993-11-09 Hewlett-Packard Company Method of maintaining consistency of cached data in a database system
US6481005B1 (en) * 1993-12-20 2002-11-12 Lucent Technologies Inc. Event correlation feature for a telephone network operations support system
JPH0830523A (ja) * 1994-07-12 1996-02-02 Hitachi Ltd オンラインメッセージの通信方法
JPH09101901A (ja) * 1995-10-06 1997-04-15 N T T Data Tsushin Kk マルチプロセスで動作するパーソナルコンピュータ上で行われるプロセス間のメッセージ通信方式及びメッセージ通信方法
GB2320112B (en) * 1996-12-07 2001-07-25 Ibm High-availability computer server system
US6178174B1 (en) * 1997-08-26 2001-01-23 International Business Machines Corporation Optimistic, eager rendezvous transmission mode and combined rendezvous modes for message processing systems
GB2330220B (en) * 1997-10-07 2002-04-10 Ibm Access control for groups of related data items
US6058389A (en) * 1997-10-31 2000-05-02 Oracle Corporation Apparatus and method for message queuing in a database system
US6240413B1 (en) * 1997-12-22 2001-05-29 Sun Microsystems, Inc. Fine-grained consistency mechanism for optimistic concurrency control using lock groups
JPH11306244A (ja) * 1998-04-16 1999-11-05 Hitachi Ltd ワーク管理システム
US6425017B1 (en) * 1998-08-17 2002-07-23 Microsoft Corporation Queued method invocations on distributed component applications
US6658485B1 (en) * 1998-10-19 2003-12-02 International Business Machines Corporation Dynamic priority-based scheduling in a message queuing system
US6606626B1 (en) * 1998-10-20 2003-08-12 Sybase, Inc. Database system with lock manager enhancement for improving concurrency
US6418438B1 (en) * 1998-12-16 2002-07-09 Microsoft Corporation Dynamic scalable lock mechanism
US6484172B1 (en) * 1999-12-24 2002-11-19 Electronics And Telecommunications Research Institute Concurrency control method for high-dimensional index structure using latch and lock
US7003781B1 (en) * 2000-05-05 2006-02-21 Bristol Technology Inc. Method and apparatus for correlation of events in a distributed multi-system computing environment
US7035852B2 (en) * 2000-07-21 2006-04-25 International Business Machines Corporation Implementing a message queuing interface (MQI) indexed queue support that adds a key to the index on put commit
US6598041B1 (en) * 2000-09-07 2003-07-22 International Business Machines Corporation Method, system, and program for processing modifications to data in tables in a database system
GB0028237D0 (en) * 2000-11-18 2001-01-03 Ibm Method and apparatus for communication of message data
US6850938B1 (en) * 2001-02-08 2005-02-01 Cisco Technology, Inc. Method and apparatus providing optimistic locking of shared computer resources
WO2002069575A1 (en) 2001-02-28 2002-09-06 Gotham Networks, Inc. Methods and apparatus for network routing device
JP3738701B2 (ja) * 2001-04-02 2006-01-25 日本電気株式会社 トランザクション処理システムにおけるシステム設定方法
US7248593B2 (en) 2001-09-25 2007-07-24 Intel Corporation Method and apparatus for minimizing spinlocks and retaining packet order in systems utilizing multiple transmit queues
US7039671B2 (en) * 2001-11-30 2006-05-02 Sonic Software Corporation Dynamically routing messages between software application programs using named routing nodes and named message queues
US7020684B2 (en) * 2002-01-18 2006-03-28 Bea Systems, Inc. System and method for optimistic caching
US7107283B2 (en) * 2002-05-28 2006-09-12 Kabushiki Kaisha Toshiba Relational job queue
US7124110B1 (en) * 2002-07-15 2006-10-17 Trading Technologies International Inc. Method and apparatus for message flow and transaction queue management
US20050158883A1 (en) * 2003-03-05 2005-07-21 Fujitsu Limited Multilayered structure film and method of making the same
JP4041002B2 (ja) * 2003-03-24 2008-01-30 株式会社三菱東京Ufj銀行 データベース更新処理システム、データベース更新のための更新データ入力方法、更新データ処理方法、およびプログラム
GB2399980A (en) * 2003-03-26 2004-09-29 Zarlink Semiconductor Ltd Packet buffer management
CA2425033A1 (en) * 2003-04-08 2004-10-08 Ibm Canada Limited - Ibm Canada Limitee Multi-level locking hierarchy in a database with multi-dimensional clustering
US20050080759A1 (en) * 2003-10-08 2005-04-14 International Business Machines Corporation Transparent interface to a messaging system from a database engine
GB0328576D0 (en) * 2003-12-10 2004-01-14 Ibm Method and apparatus for browsing a list of data items
GB0328575D0 (en) * 2003-12-10 2004-01-14 Ibm Method and apparatus for browsing a list of data items
US8271681B2 (en) * 2004-02-25 2012-09-18 Teamon Systems, Inc. Communications system using hierarchical queue structure for email message delivery and related methods
US20060059257A1 (en) * 2004-09-14 2006-03-16 Jean-Francois Collard Message queue tuning
US7421501B2 (en) * 2005-02-04 2008-09-02 Microsoft Corporation Queued sessions for communicating correlated messages over a network
US7853956B2 (en) * 2005-04-29 2010-12-14 International Business Machines Corporation Message system and method
US7680793B2 (en) * 2005-10-07 2010-03-16 Oracle International Corporation Commit-time ordered message queue supporting arbitrary read and dequeue patterns from multiple subscribers
US8015256B2 (en) * 2005-11-23 2011-09-06 Medicalis Corp. Method and apparatus for parallel sequencing of messages between disparate information systems

Also Published As

Publication number Publication date
DE602005017242D1 (de) 2009-12-03
CN1798111B (zh) 2012-01-11
ATE446633T1 (de) 2009-11-15
US20060149865A1 (en) 2006-07-06
US7568009B2 (en) 2009-07-28
JP4993905B2 (ja) 2012-08-08
US7502843B2 (en) 2009-03-10
CN1798111A (zh) 2006-07-05
EP1696611A1 (en) 2006-08-30
US20060146848A1 (en) 2006-07-06
EP1696611B1 (en) 2009-10-21
JP2006190265A (ja) 2006-07-20

Similar Documents

Publication Publication Date Title
KR20060079078A (ko) 서버 큐잉 시스템 및 방법
CN110795257B (zh) 处理多集群作业记录的方法、装置、设备及存储介质
JPH06162086A (ja) 遠隔データベースの制御方法及び装置
CN112039970B (zh) 一种分布式业务锁服务方法、服务端、系统及存储介质
CN113626286A (zh) 多集群实例处理方法、装置、电子设备及存储介质
US7908514B2 (en) Minimizing data loss in asynchronous replication solution using distributed redundancy
CA3041211C (en) Utilizing nonce table to resolve concurrent blockchain transaction failure
US9069632B2 (en) Message processing
CN112835885B (zh) 一种分布式表格存储的处理方法、装置及系统
CN112969198A (zh) 数据传输方法、终端及存储介质
CN112865927B (zh) 消息送达验证方法、装置、计算机设备和存储介质
CN115563226A (zh) 基于数据库的数据消费方法、控制装置及可读存储介质
US11671458B1 (en) Coherent method of consistency for purpose of cloud authorization
CN114036164A (zh) 一种乐观锁和悲观锁组合的高并发交易加锁方法及系统
CN114510352A (zh) 一种自动渗透项目调度任务方法及系统
CN105511813A (zh) 访问服务器磁盘的方法、装置及系统
CN112860746B (zh) 一种基于缓存削减的方法、设备及系统
CN114900531B (zh) 数据同步方法、装置和系统
CN110309191A (zh) 存储业务数据的方法、装置和系统
CN116361016B (zh) 一种网络控制器消息处理方法、系统
US11799796B1 (en) Closed loop change management for cloud-based systems
KR102303895B1 (ko) 이중화 성능이 개선된 데이터베이스 이중화시스템
US8015154B1 (en) Starting database software in response to a broadcast message
CN115118519B (zh) 一种基于Hadoop平台的网络主机漏洞扫描新方法
CN111797062B (zh) 数据处理方法、装置和分布式数据库系统

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee