Фиксация / откат не работает на .NET с очередями Oracle AQ - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь совершать транзакции с Oracle AQ и VB.NET. При чтении сообщения и фиксации оно не работает. Транзакция полностью игнорируется, и сообщение остается в очереди со статусом UNREAD. Чего-то не хватает?

    Public Sub TestDequeueRollback()
    Dim constr = String.Format("user id={0};password={1};data source={2}", "HR", "HR", "ORCLPDB")
    Dim connection = New OracleConnection(constr)
    connection.Open()
    Dim transaction = connection.BeginTransaction
    Dim queue = New OracleAQQueue("HR.SRUMSGIN20", connection)
    queue.DequeueOptions.Visibility = OracleAQVisibilityMode.OnCommit
    queue.DequeueOptions.Wait = 3
    queue.DequeueOptions.DequeueMode = OracleAQDequeueMode.Locked
    queue.MessageType = OracleAQMessageType.Udt
    queue.UdtTypeName = "SYS.AQ$_JMS_BYTES_MESSAGE"
    Dim message = queue.Dequeue()
    transaction.Commit()
    queue.Dispose()
    connection.Close()
    connection.Dispose()
    End Sub
...