KR20060079078A - 서버 큐잉 시스템 및 방법 - Google Patents
서버 큐잉 시스템 및 방법 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/40—Network 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, e.g. lock management in shared database
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
Abstract
큐잉 서버는 하나의 서브시스템이 하나 이상의 순서화된 동작을 비동기적으로 수행하도록 요구되는 곳에서 신뢰성있는 메시지 전송에 이용된다. 메시지들은 하나 이상의 메시지를 가질 수 있는 그룹으로 큐에 전송된다. 특정한 그룹내의 메시지들은 사전설정된 순서대로 프로세싱된다. 선택에 따라서, 메시지 그룹들은 특정한 상관관계인 모든 그룹이 사전설정된 순서대로 프로세싱될 수 있도록 상관있게 표시될 수 있다. 메시지는 그 프로세싱이 완료될 때까지 SQL 데이터베이스 테이블에 저장될 수 있다. 메시지 시스템의 수신측은 다수의 기계들 및/또는 임의의 주어진 기계의 가용 자원에 따라 스케일될 수 있다. 이 시스템은 송신측의 "오작동" 시나리오(즉, 송신 기계가 한 그룹의 전송중에 고장) 및 수신측의 "오작동" 시나리오(즉, 정전이 수신 기계들 중 적어도 한곳에서 재시동 야기) 모두를 처리할 수 있다.
큐잉 시스템, 메시지 그룹, 상관 식별자, 연관 그룹, SQL 테이블
Description
도 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 오브젝트를 호출할 수 있다. 예컨대, 송신기 오브젝트는 다음과 같이 규정될 수 있다 :
먼저, 송신 서브시스템 클라이언트는 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는 프로젝트 서버가 개시되거나 관리자에 의해 수동 작동되는 경우에 수신 서비스를 설정하는데 이용된다. 수신기 오브젝트는 다음과 같이 규정될 수 있다 :
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인데, 다음과 같이 규정된다 :
수신기 오브젝트의 워커 스레드 각각은 클라이언트 오브젝트의 인스턴스를 예시한다. 임의의 메시지가 판독되기 전에, IProcessMessage.StartMessageGroup() 이 호출된다. 이것은 메시지 그룹을 프로세싱하기 전에 필요한 임의의 초기화 또는 다른 프로세싱을 할 기회를 클라이언트에게 제공한다. 다음으로, 메시지 그룹내의 각 메시지에 관해, IProcessMessage.ProcessMessageCallback()이 호출된다.
ProcessMessageCallback의 복귀값은 메시지가 성공적으로 프로세싱되었는지를 지정한다. 복귀값이 "참"이라면, 메시지는 큐에서 갑자기 사라질 수 있다. "거짓"의 복귀값은 메시지가 실패했다는 것을 나타내며, 이 후 큐잉 시스템은 동일한 메시지로 ProcessMessageCallback을 재호출할 수 있다.
수신 스레드가 (마지막 메시지를 수신하거나 또는 제외로 인한 중단 중 어느 하나에 의해) 메시지 판독을 종료하는 경우에, IProcessMessage.EndMessageGroup()이 호출될 수 있다. 이것은 원해질 수 있는 임의의 종결처리 또는 종료할 기회를 클라이언트에게 제공한다.
Message 파라미터는 일반적으로 메시지 그 자신이다. 이러한 오브젝트는 다음의 특성들을 갖는다 :
MessageID는 메시지의 ID를 제공하는데, 이 ID는 그룹내에서 고유하다. 그룹내의 제 1 메시지는 일반적으로 하나의 ID를 가지고, 그룹내의 제 2 메시지 또한 하나의 ID를 갖는 식이다. MessageBody는 Sender.Send() 방법을 통해 처음부터 전송되는 오브젝트이다.
Group 파라미터는 그 메시지가 속하는 그룹에 관한 메타데이터를 일반적으로 포함하는 오브젝트이다. Group 파라미터는 다음의 특성들을 제공한다 :
GroupID는 그룹의 고유 식별자이다. 각각의 메시지 그룹은 고유 GroupID를 갖는다. CorrelationID는 상관된 메시지 그룹의 고유 식별자이다. 이것은 Sender.BeginMessageGroup()이 호출되는 경우에 Sender.BeginMessageGroup()에 제공되는 파라미터에 대응한다. MessageType은 메시지의 유형을 지정하는 클라이언트-규정 나열형이다. MessageType은 Sender.BeginMessageGroup()에 제공되는 파라미터에 대응한다. Priority는 그룹 우선 순위이다. Priority는 Sender.BeginMessageGroup()에 제공되는 파라미터에 대응한다. LastMessageId는 그룹내의 마지막 메시지의 MessageId를 제공한다. 따라서, msg.MessageId는 그룹내의 마지막 메시지를 직면하는 경우에 messageGroup.LastMessageId와 동일할 것이다.
MessageContext 파라미터는 그 메시지의 현재 프로세싱 상태에 관한 추가 정보를 포함할 수 있다. MessageContext 파라미터는 다음과 같이 규정될 수 있다 :
RetryCount는 특정한 메시지로 호출되어 진 ProcessMessageCallback의 횟수이다. 제 1 호출시, 그 값은 일반적으로 "1"일 것이다. GroupRetryCount는 특정 한 그룹이 프로세싱을 시도했던 횟수이다. 어떤 이유로 인해 수신기 워커 스레드가 그룹 프로세싱을 중단한다면, GroupRetryCount는 그 그룹에 대해 재시도할 것인데, 일반적으로 제 1의 프로세싱되지 않은 메시지로 시작한다. SleepBeforeRetry는 메시지 프로세싱 실패시에 그 메시지를 재시도하기 전에 워커 스레드가 얼마 동안 정지해야 하는지를 워커 스레드에 알려주는 클라이언트 설정 파라미터이다.
낮은 레벨의 큐 액세스 :
큐잉 서버(200)는 일반적으로 큐 저장 "독립매체(agnostic)"이다(즉, 이 서버는 큐 저장의 내부 작업에 독립적이다). 큐잉 서버(200)는 IQueueAccess를 지원하는 오브젝트를 통해 큐 읽기/쓰기/팝 액세스하는데, 이 System.Type은 Sender 및 Receiver 오브젝트의 구성자에 제공된다. IqueueAccess는 다음과 같이 규정될 수 있다 :
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 항에 있어서,상기 수신된 메시지 그룹은 SQL 테이블에 저장되는 컴퓨터 구현 방법.
- 제 1 항에 있어서,상기 저장된 메시지 그룹은 다수의 기계에 전송되는 컴퓨터 구현 방법.
- 제 1 항에 있어서,우선순위 값이 각각의 수신된 메시지 그룹과 연관되는 컴퓨터 구현 방법.
- 제 4 항에 있어서,상기 메시지 그룹은 상기 연관된 우선순위 값에 따라 전송되는 컴퓨터 구현 방법.
- 제 1 항에 있어서,GUID가 상기 상관 식별자로 이용되는 컴퓨터 구현 방법.
- 제 6 항에 있어서,상기 GUID는 클라이언트에 의해 제공되는 컴퓨터 구현 방법.
- 제 1 항에 있어서,상기 사전설정된 순서는 상기 메시지 그룹이 수신되는 순서인 컴퓨터 구현 방법.
- 제 1 항에 있어서,연관 그룹의 최종 메시지 그룹이 상기 연관 그룹의 임의의 저장 메시지 그룹을 전송하기 전에 수신되는 컴퓨터 구현 방법.
- 제 1 항에 있어서,상기 상관 식별자에 의해 연관되는 수신 메시지 그룹을 전송에 관해 잠그는 단계 및 상기 상관 식별자에 의해 연관되는 최종 메시지 그룹이 수신되는 경우에 상기 수신 메시지 그룹을 전송에 관해 잠금 해제하는 단계를 더 포함하는 컴퓨터 구현 방법.
- 메시지를 큐잉하기 위한 시스템에 있어서,송신기 서브시스템으로부터 전송되는 메시지 그룹 - 각각의 메시지 그룹은 적어도 하나의 메시지를 포함함 - 을 큐잉 시스템에서 전송하기 위한 수단과,상기 큐잉 시스템을 이용하여 상기 수신된 메시지 그룹을 사전설정된 순서대로 저장하기 위한 수단과,각각의 메시지 그룹에 관한 상관 식별자 - 상기 상관 식별자는 메시지 그룹을 연관시키는 데 이용됨 - 를 상기 큐잉 시스템에서 수신하기 위한 수단과,상기 큐잉 시스템을 이용하여 상기 수신된 상관 식별자를 저장하기 위한 수단 및상기 사전설정된 순서 및 상기 상관 식별자에 따라 상기 저장된 메시지 그룹을 전송하기 위한 수단을 포함하는 메시지 큐잉 시스템.
- 제 11 항에 있어서,상기 수신된 메시지 그룹은 SQL 테이블에 저장되는 메시지 큐잉 시스템.
- 제 11 항에 있어서,상기 저장된 메시지 그룹은 다수의 기계에 전송되는 메시지 큐잉 시스템.
- 제 11 항에 있어서,우선순위 값이 각각의 수신된 메시지 그룹과 연관되는 메시지 큐잉 시스템.
- 제 14 항에 있어서,상기 메시지 그룹은 상기 연관된 우선순위 값에 따라 전송되는 메시지 큐잉 시스템.
- 메시지 큐잉 시스템을 관리하기 위한 컴퓨터 실행 가능 명령을 구비하는 컴퓨터 판독 매체에 있어서,송신기 서브시스템으로부터 전송되는 메시지 그룹 - 각각의 메시지 그룹은 적어도 하나의 메시지를 포함함 - 을 큐잉 시스템에서 수신하는 명령과,상기 큐잉 시스템을 이용하여 상기 수신된 메시지 그룹을 사전설정된 순서대로 저장하는 명령과,각각의 메시지 그룹에 관한 상관 식별자 - 상기 상관 식별자는 메시지 그룹을 연관시키는 데 이용됨 - 를 상기 큐잉 시스템에서 수신하는 명령과,상기 큐잉 시스템을 이용하여 상기 수신된 상관 식별자를 저장하는 명령과,상기 사전설정된 순서 및 상기 상관 식별자에 따라 상기 저장된 메시지 그룹을 전송하는 명령을 포함하는 컴퓨터 판독 매체.
- 제 16 항에 있어서,GUID가 상기 상관 식별자로 이용되는 컴퓨터 판독 매체.
- 제 16 항에 있어서,상기 사전설정된 순서는 상기 메시지 그룹이 수신되는 순서인 컴퓨터 판독 매체.
- 제 16 항에 있어서,연관 그룹의 최종 메시지 그룹이 상기 연관 그룹의 임의의 저장 메시지 그룹을 전송하기 전에 수신되는 컴퓨터 판독 매체.
- 제 16 항에 있어서,상기 상관 식별자에 의해 연관되는 수신 메시지 그룹을 전송에 관해 잠그는 명령 및 상기 상관 식별자에 의해 연관되는 최종 메시지 그룹이 수신되는 경우에 상기 수신 메시지 그룹을 전송에 관해 잠금 해제하는 명령을 더 포함하는 컴퓨터 판독 매체.
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)
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)
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 |
-
2004
- 2004-12-30 US US11/026,501 patent/US7502843B2/en not_active Expired - Fee Related
-
2005
- 2005-10-31 US US11/263,005 patent/US7568009B2/en not_active Expired - Fee Related
- 2005-11-10 KR KR1020050107407A patent/KR20060079078A/ko active IP Right Grant
- 2005-11-30 CN CN2005101287546A patent/CN1798111B/zh not_active Expired - Fee Related
- 2005-12-06 JP JP2005352578A patent/JP4993905B2/ja not_active Expired - Fee Related
- 2005-12-08 EP EP05111831A patent/EP1696611B1/en not_active Not-in-force
- 2005-12-08 AT AT05111831T patent/ATE446633T1/de not_active IP Right Cessation
- 2005-12-08 DE DE602005017242T patent/DE602005017242D1/de active Active
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 |