I think you need to begin the transaction before you open the session. If you don't, nhibernate does not enlist. It's been a little while since I used nhibernate so I am not positive. On Sep 19, 8:52 am, Kenny Eliasson <[email protected]> wrote: > Hi there! > > When I send my messages to the queue I include a JobLogId which I > later on uses in my consumer for loading a entity from NHibernate. I > then change the status of the job to processing, starts the invoke the > Consume-method that can take everywhere from 1 second to 10 minutes > and after the job is done I once again load the entity and mark it as > done. > > The problem is that it seems the DTC-transaction is locking the table, > so that I can't query on it. > > I'm using the following code > > public void Consume(T message) > { > > JobLog jobLog; > using (var session = _sessionFactory.OpenSession()){ > //using (var tx = session.BeginTransaction()) { > jobLog = session.Get<JobLog>(message.JobLogId); > jobLog.Processing(); > //tx.Commit(); > session.Flush(); > } > > _logger.InfoFormat("Starting processing message of type > {0}.\nMessage data: {1}", jobLog.MessageType, jobLog.MessageData); > > try { > Consume(message, _logger); > } catch (Exception e) { > _logger.Fatal(string.Format("The consumer {0} threw an > exception", this.GetType().Name), e); > using (var session = _sessionFactory.OpenSession()) > using (var tx = session.BeginTransaction()) { > jobLog = session.Get<JobLog>(message.JobLogId); > jobLog.Crashed(); > tx.Commit(); > } > return; > } > > _logger.InfoFormat("Done processing message of type {0}", > message.GetType().Name); > > using (var session = _sessionFactory.OpenSession()) { > //using (var tx = session.BeginTransaction()) { > jobLog = session.Get<JobLog>(message.JobLogId); > jobLog.Done(); > //tx.Commit(); > session.Flush(); > } > } > > As you see I've tried to comment out the transaction parts of > NHibernate without success. > > Is there a way to solve this without locking the whole table? Is there > a better way of logging then doing it in the consume-method? Any > thoughts?
-- You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rhino-tools-dev?hl=en.
