J
John
Hi,
I have an app that uses Queued Components. The queue is set as
transactional and the transaction is set to Supported (I've also tried
Required). Everything is running on the same box (tried XP and 2k3). In my
app I wrap the queued component call in a TransactionScope. I'm using
EnterpriseServicesInteropOption.Full in creating the scope. Right after
queuing the component I intentionally throw an exception and don't complete
the scope. The message stays on the queue and gets processed. This is a
simplified version of what my program really does, which is call a database
update within that same scope. When something fails I want the entire
transaction rolled back; DB and MSMQ. What actually happens though is that
the DB rolls back but MSMQ doesn't. I created the simplified version just
to see if I could get MSMQ to roll back, but I can't. So what am I missing?
John
I have an app that uses Queued Components. The queue is set as
transactional and the transaction is set to Supported (I've also tried
Required). Everything is running on the same box (tried XP and 2k3). In my
app I wrap the queued component call in a TransactionScope. I'm using
EnterpriseServicesInteropOption.Full in creating the scope. Right after
queuing the component I intentionally throw an exception and don't complete
the scope. The message stays on the queue and gets processed. This is a
simplified version of what my program really does, which is call a database
update within that same scope. When something fails I want the entire
transaction rolled back; DB and MSMQ. What actually happens though is that
the DB rolls back but MSMQ doesn't. I created the simplified version just
to see if I could get MSMQ to roll back, but I can't. So what am I missing?
John