[jboss-user] [JBoss Messaging] - Re: Reliable delivery
do-not-reply at jboss.com
Mon Feb 11 16:09:54 EST 2008
"timfox" wrote : "vc123" wrote :
| | anonymous wrote :
| | | On my tests, persistent auto-ack send was too fast ( about 3000 1K messages/s) which means that there is no auto commit. if so, it would mean that persistent message delivery is not really reliable which is a violation of the JMS spec.
| | |
| | No, that's not a violation of the spec for previously mentioned reasons. I suspect you are using a non durable subscriber, in which case messages won't get persisted anyway.
| | Please can you explain whether you are using a queue or topic, whether it is temporary, and if a topic, whether is durable or non durable?
| It turns out that the speed was so high because I used Hypersonic as the "persistent" store. When I switched to Oracle, the 1KB message production rate fell down to the expected value of about 100 messages/sec.
| I traced Oracle SQL statements resulting from message send/receive calls, and I saw that with persistent delivery a commit is issued once per each message in the AUTO_ACK mode and once per batch in the transactional mode as expected. So JBoss Messaging works according to the spec.
| However, I was rather disappointed with non_persistent delivery which was about 1700-2000 messages/s with Oracle. Apparently, even with non_persistent delivery, JM still issues quite a few SQL calls.
| Switching back to HSQL, in hopes to improve performance, was no joy either because on my stress test (sending-receiving 1K messages in a loop) HSQL failed repeated with the following stack:
| | 15:48:04,936 WARN [JDBCSupport] SQLException caught, SQLState 23000
| | code:-104- assuming deadlock detected, try:1
| | java.sql.SQLException: Violation of unique constraint SYS_PK_51:
| | duplicate value(s) for column(s) $$ in statement [INSERT INTO JBM_MSG
| | (MESSAGE_ID, RELIABLE, EXPIRATION, TIMESTAMP, PRIORITY, TYPE, HEADERS,
| | PAYLOAD) SELECT ?, ?, ?, ?, ?, ?, ?, ? FROM JBM_DUAL WHERE NOT EXISTS
| | (SELECT MESSAGE_ID FROM JBM_MSG WHERE MESSAGE_ID = ?)]
| | at org.hsqldb.jdbc.Util.throwError(Unknown Source)
| | at org.hsqldb.jdbc.jdbcPreparedStatement.executeUpdate(Unknown
| | Source)
| The failure occured under JBoss 5 Beta 4 as well as Jboss 4.2.2 with SP3 Messaging.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4128499#4128499
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4128499
More information about the jboss-user