Я пытаюсь совершать транзакции с 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