2013-11-14 3 views
0

큐잉을위한 간단한 메커니즘을 만드는 데 조언이 필요합니다.오라클 11g의 많은 생산자와 많은 소비자

참고 :"소비자", "생산자"및 "제품"단어는 "생산자 - 소비자 문제"용어의 단어입니다.

"제품"을 생성 할 수있는 "프로듀서"(PL/SQL 프로 시저)가 있습니다 (행 또는 ID와 비슷 함).

그런 다음이 정보를 일부 FIFO 대기열에 넣고 싶습니다 (이 테이블이 될 수 있음).

그런 다음, 예를 들어 "소비자"(대기열에서받은 "제품"을 소비 할 수있는 PL/SQL 프로 시저)를 10 개 이상 정의해야합니다.

어떻게하면 좋을까요?

+4

AQ - 일명 Oracle Advanced Queuing입니다. 오라클 데이터베이스 내부에 내장 된 메시징 시스템입니다. – ibre5041

+0

몇 가지 예제를 제공 할 수 있습니까? 그렇다면 답변을 수락합니다. – WBAR

+0

SQL을 레코드의 전체 _sets_를 처리하기 위해 명시 적으로 작성했기 때문에 직선적 인 RDBMS에서이를 구현하려고하면 다소 문제가 발생합니다. 다른 것들 중에서도 테이블의 행에 고유 한 '순서'가 없습니다 (클러스터 된 인덱스로 인한 순서는 보증되지 않은 최적화이므로 신뢰할 수 없습니다). 이와 같은 것을 만들 수 있고 (대규모 메시징 시스템은 DB에 의해 뒷받침 될 가능성이 있음), 신뢰성을 높이기 위해 많은 노력이 필요하다는 점에 유의하십시오 (일반적으로 DB 외부에서 오류가 발생하는 경우). –

답변

1

공식 문서를 살펴보면 인터넷에서 여러 가지 howtos를 찾을 수 있습니다.

http://docs.oracle.com/cd/B10501_01/appdev.920/a96587/apexampl.htm

또한 AQ는 자바 JMS 공급자로 역할을 할 수 있음을 지적한다. 따라서 Weblogic에서는 AQ를 "일반적인"Java Messaging System 표준의 공급자로 사용할 수 있습니다.

+0

난 순수한 PL/SQL 솔루션이 필요하고 소비자를 만드는 방법을 이해할 수 없다. Queue와 Queue에 객체를 넣고 싶을 때 (최대 매개 변수로) 프로세스를 생성합니다. 비슷한 기능이 http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ThreadPoolExecutor.html을 제공하지만 Java에서는 PL/SQL과 같은 것이 더 유용 할 것입니다 – WBAR

+1

반복적 인 스케줄러 작업 만 작성하면됩니다. . 데이터베이스가 부팅 할 때이 작업이 시작되도록하십시오 (db 시작 트리거). 이 작업에는 무한 루프가 있으며 대기열에 무엇인가 나타날 때까지 기다립니다. – ibre5041

+1

PL/SQL에서이 작업을 모두 수행하고 대기열에 무언가가있을 때 실행될 async pl/sql 프로 시저를 등록 할 수 있습니다. – OldProgrammer

관련 문제