Hi folks, I just uploaded a new version of the patch to my site
http://familieposselt.de/jboss-3.2.4RC2-src-patched2.tz I want to do some more tests, but it seems to work. If any of you guys out there are interested, feel free to check it out. @Adrian: What did you mean by unloading messages when there are no subscribers? - Unloading from the buffer for queues is not implemented - Unloading of messages in topics should work as expected To get it running: 1) build patched JBoss 2) Use jdbc3-PersistenceManager If you want to use MySQL<4.1 try the following: <depends optional-attribute-name="ConnectionManager">jboss.jca:service=LocalTxCM,name=MysqlDS BLOB_TYPE=BYTES_BLOB UPDATE_MARKED_MESSAGES = UPDATE JMS_MESSAGE_LOG SET TXID=?, TXOP=? WHERE TXOP=? UPDATE_MARKED_REFERENCES = UPDATE JMS_REFERENCE_LOG SET TXID=?, TXOP=? WHERE TXOP=? UPDATE_MARKED_MESSAGES_WITH_TX = UPDATE JMS_MESSAGE_LOG SET TXID=?, TXOP=? WHERE TXOP=? AND TXID=? UPDATE_MARKED_REFERENCES_WITH_TX = UPDATE JMS_REFERENCE_LOG SET TXID=?, TXOP=? WHERE TXOP=? AND TXID=? DELETE_MARKED_MESSAGES_WITH_TX = DELETE FROM JMS_MESSAGE_LOG WHERE TXID IN (SELECT TXID FROM JMS_TRANSACTION_LOG) AND TXOP=? DELETE_MARKED_REFERENCES_WITH_TX = DELETE FROM JMS_REFERENCE_LOG WHERE TXID IN (SELECT TXID FROM JMS_TRANSACTION_LOG) AND TXOP=? DELETE_TX = DELETE FROM JMS_TRANSACTION_LOG WHERE TXID = ? DELETE_MARKED_MESSAGES = DELETE FROM JMS_MESSAGE_LOG WHERE TXID=? AND TXOP=? DELETE_MARKED_REFERENCES = DELETE FROM JMS_REFERENCE_LOG WHERE TXID=? AND TXOP=? DELETE_TEMPORARY_MESSAGES = DELETE FROM JMS_MESSAGE_LOG WHERE TXOP='T' DELETE_TEMPORARY_REFERENCES = DELETE FROM JMS_REFERENCE_LOG WHERE TXOP='T' INSERT_TX = INSERT INTO JMS_TRANSACTION_LOG (TXID) values(?) SELECT_MAX_TX = SELECT MAX(TXID) FROM JMS_TRANSACTION_LOG SELECT_MAX_ID_IN_DEST = SELECT MAX(MESSAGEID) FROM JMS_MESSAGE_LOG WHERE DESTINATION=? SELECT_MESSAGE_COUNT_IN_DEST = SELECT COUNT(MESSAGEID) FROM JMS_MESSAGE_LOG WHERE DESTINATION=? SELECT_MESSAGES_IN_DEST = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGE_LOG WHERE DESTINATION=? SELECT_REFERENCES_IN_DEST = SELECT R.MESSAGEID, M.MESSAGEBLOB, R.REDELIVERED, R.REDELIVERS FROM JMS_REFERENCE_LOG AS R, JMS_MESSAGE_LOG AS M WHERE R.MESSAGEID = M.MESSAGEID AND R.DESTINATION=? SELECT_MESSAGE = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGE_LOG WHERE MESSAGEID=? AND DESTINATION=? INSERT_MESSAGE = INSERT INTO JMS_MESSAGE_LOG (MESSAGEID, DESTINATION, MESSAGEBLOB, TXID, TXOP, LATECLONE) VALUES(?,?,?,?,?,?) INSERT_REFERENCE = INSERT INTO JMS_REFERENCE_LOG (MESSAGEID, DESTINATION, TXID, TXOP, REDELIVERED, REDELIVERS) VALUES(?,?,?,?,?,?) MARK_MESSAGE = UPDATE JMS_MESSAGE_LOG SET TXID=?, TXOP=? WHERE MESSAGEID=? AND DESTINATION=? MARK_REFERENCE = UPDATE JMS_REFERENCE_LOG SET TXID=?, TXOP=? WHERE MESSAGEID=? AND DESTINATION=? DELETE_MESSAGE = DELETE FROM JMS_MESSAGE_LOG WHERE MESSAGEID=? AND DESTINATION=? DELETE_REFERENCE = DELETE FROM JMS_REFERENCE_LOG WHERE MESSAGEID=? AND DESTINATION=? UPDATE_MESSAGE = UPDATE JMS_MESSAGE_LOG SET MESSAGEBLOB=? WHERE MESSAGEID=? AND DESTINATION=? UPDATE_REFERENCE = UPDATE JMS_REFERENCE_LOG SET REDELIVERED=?, REDELIVERS=? WHERE MESSAGEID=? AND DESTINATION=? DELETE_ORPHANED_MESSAGES = DELETE FROM JMS_MESSAGE_LOG WHERE LATECLONE = '1' AND MESSAGEID NOT IN (SELECT MESSAGEID FROM JMS_REFERENCE_LOG) DELETE_ALL_TXS = DELETE FROM JMS_TRANSACTION_LOG CREATE_REFERENCE_TABLE = CREATE TABLE JMS_REFERENCE_LOG ( MESSAGEID INTEGER NOT NULL, DESTINATION VARCHAR(255) NOT NULL, TXID INTEGER, TXOP CHAR(1), REDELIVERED CHAR(1), REDELIVERS INTEGER, PRIMARY KEY (MESSAGEID, DESTINATION) ) TYPE=InnoDB CREATE_MESSAGE_TABLE = CREATE TABLE JMS_MESSAGE_LOG ( MESSAGEID INTEGER NOT NULL, DESTINATION VARCHAR(255), TXID INTEGER, TXOP CHAR(1), LATECLONE CHAR(1), MESSAGEBLOB BLOB, PRIMARY KEY (MESSAGEID, DESTINATION) ) TYPE=InnoDB CREATE_TX_TABLE = CREATE TABLE JMS_TRANSACTION_LOG ( TXID INTEGER ) TYPE=InnoDB SELECT_MARKED_TX = SELECT JMS_MESSAGE_LOG.TXID FROM JMS_TRANSACTION_LOG, JMS_MESSAGE_LOG WHERE JMS_TRANSACTION_LOG.TXID = JMS_MESSAGE_LOG.TXID AND TXOP=? SELECT_ORPHANED_MESSAGES = SELECT JMS_MESSAGE_LOG.MESSAGEID, JMS_MESSAGE_LOG.DESTINATION FROM JMS_MESSAGE_LOG LEFT JOIN JMS_REFERENCE_LOG ON JMS_MESSAGE_LOG.MESSAGEID = JMS_REFERENCE_LOG.MESSAGEID WHERE LATECLONE = '1' AND JMS_REFERENCE_LOG.MESSAGEID IS NULL SELECT_MAX_ID_IN_DEST = SELECT MAX(MESSAGEID) FROM JMS_MESSAGE_LOG WHERE DESTINATION=? SELECT_MESSAGE_COUNT_IN_DEST = SELECT COUNT(*) FROM JMS_MESSAGE_LOG WHERE DESTINATION=? SELECT_MESSAGE_COUNT_IN_DEST = SELECT COUNT(MESSAGEID) FROM JMS_MESSAGE_LOG WHERE DESTINATION=? SELECT_NEXT_MESSAGE = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGE_LOG WHERE DESTINATION=? AND ((MESSAGEID>? AND PRIORITY=?) OR PRIORITY<?) ORDER BY PRIORITY DESC, MESSAGEID SELECT_MESSAGEID_BY_JMSID = SELECT MESSAGEID, PRIORITY FROM JMS_MESSAGE_LOG WHERE DESTINATION=? AND JMSID = ? SELECT_MESSAGES_IN_DEST_WITH_PRIO_AND_JMSID = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGE_LOG WHERE DESTINATION=? ORDER BY PRIORITY, MESSAGEID INSERT_MESSAGE_WITH_PRIO_AND_JMSID = INSERT INTO JMS_MESSAGE_LOG (MESSAGEID, DESTINATION, MESSAGEBLOB, TXID, TXOP, LATECLONE, PRIORITY, JMSID) VALUES(?,?,?,?,?,?,?,?) CREATE_MESSAGE_TABLE_WITH_PRIO_AND_JMSID = CREATE TABLE JMS_MESSAGE_LOG ( MESSAGEID INTEGER NOT NULL, DESTINATION VARCHAR(255), TXID INTEGER, TXOP CHAR(1), LATECLONE CHAR(1), MESSAGEBLOB BLOB, PRIORITY INTEGER, JMSID VARCHAR(255), PRIMARY KEY (MESSAGEID, DESTINATION) ) TYPE=InnoDB CREATE_TABLES_ON_STARTUP = TRUE SUB_QUERIES = FALSE EXTENDED_MESSAGE_TABLE = TRUE FETCH_SIZE = 1000 3) Add the following lines to SqlProperties in xxx-jdbc3-service.xml: SELECT_MARKED_TX = SELECT JMS_MESSAGE_LOG.TXID FROM JMS_TRANSACTION_LOG, JMS_MESSAGE_LOG WHERE JMS_TRANSACTION_LOG.TXID = JMS_MESSAGE_LOG.TXID AND TXOP=? SELECT_ORPHANED_MESSAGES = SELECT JMS_MESSAGE_LOG.MESSAGEID, JMS_MESSAGE_LOG.DESTINATION FROM JMS_MESSAGE_LOG LEFT JOIN JMS_REFERENCE_LOG ON JMS_MESSAGE_LOG.MESSAGEID = JMS_REFERENCE_LOG.MESSAGEID WHERE LATECLONE = '1' AND JMS_REFERENCE_LOG.MESSAGEID IS NULL SELECT_MAX_ID_IN_DEST = SELECT MAX(MESSAGEID) FROM JMS_MESSAGE_LOG WHERE DESTINATION=? SELECT_MESSAGE_COUNT_IN_DEST = SELECT COUNT(*) FROM JMS_MESSAGE_LOG WHERE DESTINATION=? SELECT_MESSAGE_COUNT_IN_DEST = SELECT COUNT(MESSAGEID) FROM JMS_MESSAGE_LOG WHERE DESTINATION=? SELECT_NEXT_MESSAGE = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGE_LOG WHERE DESTINATION=? AND ((MESSAGEID>? AND PRIORITY=?) OR PRIORITY<?) ORDER BY PRIORITY DESC, MESSAGEID SELECT_MESSAGEID_BY_JMSID = SELECT MESSAGEID, PRIORITY FROM JMS_MESSAGE_LOG WHERE DESTINATION=? AND JMSID = ? SELECT_MESSAGES_IN_DEST_WITH_PRIO_AND_JMSID = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGE_LOG WHERE DESTINATION=? ORDER BY PRIORITY, MESSAGEID INSERT_MESSAGE_WITH_PRIO_AND_JMSID = INSERT INTO JMS_MESSAGE_LOG (MESSAGEID, DESTINATION, MESSAGEBLOB, TXID, TXOP, LATECLONE, PRIORITY, JMSID) VALUES(?,?,?,?,?,?,?,?) CREATE_MESSAGE_TABLE_WITH_PRIO_AND_JMSID = CREATE TABLE JMS_MESSAGE_LOG ( MESSAGEID INTEGER NOT NULL, DESTINATION VARCHAR(255), TXID INTEGER, TXOP CHAR(1), LATECLONE CHAR(1), MESSAGEBLOB BLOB, PRIORITY INTEGER, JMSID VARCHAR(255), PRIMARY KEY (MESSAGEID, DESTINATION) ) TYPE=InnoDB EXTENDED_MESSAGE_TABLE = TRUE FETCH_SIZE = 1000 and adapt them to your DBMS if necessary 4) Add the following properties to your queue-MBeans: ... false true 5000 5) Start JBoss If everything works fine, FooQueue should now be able to hold millions of messages Topics are testet for basic functionality. Queues are probably more stable. For fine tuning: - FETCH_SIZE specifies the number of messages that are read in a query from the database - BufferSize specifies the size of the buffer in BasicQueue Greetings, Dietmar View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3838484#3838484 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3838484 ------------------------------------------------------- This SF.Net email is sponsored by the new InstallShield X. >From Windows to Linux, servers to mobile, InstallShield X is the one installation-authoring solution that does it all. Learn more and evaluate today! http://www.installshield.com/Dev2Dev/0504 _______________________________________________ JBoss-Development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development