2016-07-27 9 views
0

Oracle AQ 다중 소비자 대기열에 연결하는 클라이언트 응용 프로그램이 있습니다. OracleAQQueue.Listen을 사용하여 대기열에서 새 메시지를 수신합니다. API docs은 다중 소비자 대기열에 Listen 메서드를 사용할 수 있음을 보여줍니다. 대기열을 청취하는 코드가 아래에 나와 있습니다.다중 소비자 대기열에서 ODP.NET OracleAQQueue.Listen 사용

string consumerName = "APPINST1";    
using (OracleConnection con = new OracleConnection(connectionString)) 
{ 
    con.Open(); 

    OracleAQQueue queue = new OracleAQQueue("MY_Q"); 
    queue.MessageType = OracleAQMessageType.Udt; 
    queue.UdtTypeName = "MY_Q_MSG"; 
    queue.DequeueOptions.DeliveryMode = OracleAQMessageDeliveryMode.Persistent; 
    queue.Connection = con; 

    Console.WriteLine("Listening for messages..."); 
    queue.Listen(new string[] { consumerName }); 
} 

제가하는 데 문제는 내가 queue.Listen()를 호출 코드의 라인에, 내가 오라클 예외 얻을 수 있습니다 :이 특정 오류에 대한 조언을 위해 인터넷 검색을

ORA-25295: Subscriber is not allowed to dequeue buffered messages 

을 너무 도움이되지 않았습니다. 구독자를 제거하고 큐에 여러 번 추가하여 아무 쓸모가 없습니다. 내 생각 엔 Listen을 호출하기 전에 일부 속성을 올바르게 설정하지 않고 있지만 문제를 파악할 수 없습니다.

아이디어가 있으십니까?

답변

0

내가 Chapter 10 - Oracle Streams AQ Operations Using PL/SQL에서 스트림 고급 큐 사용자 안내서의 다음 주 가로 질러 : 나는 그것을 명시 적으로 내가 같은 규칙을 추측하고있어, 어디서나 언급 찾을 수 없지만

Note: Listening to multiconsumer queues is not supported in the Java API. 

ODP에 적용 .NET API.