Oracle AQ マルチコンシューマ キューに接続するクライアント アプリケーションがあります。OracleAQQueue.Listen を使用して、キューの新しいメッセージをリッスンしたいと考えています。 API ドキュメントは、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() を呼び出すコード行で、Oracle 例外が発生することです。
ORA-25295: Subscriber is not allowed to dequeue buffered messages
この特定のエラーに関するアドバイスをグーグルで検索しても、あまり役に立ちませんでした。サブスクライバーをキューから削除して再追加しましたが、役に立ちませんでした。私の推測では、Listen を呼び出す前に一部のプロパティを正しく設定していないのですが、問題がわかりません。
何か案は?