Hi, the situation is the following: my application consumes messages slower than their incoming rate is thus some of them will be persisted to a Postgres RDMS (depending on memory cache-size settings, etc.) However all of these messages will be marked with 'T' and be deleted at server restart as a result. [Actually I've found a thread with similar topic but it was dated in 2002]
Questions: 1. Is this the intended way how Message Cache and Persistence Manager should work, or I missed something in my jdbc-service.xml (quoted below)? 2. How can I get around this problem? Is there a way of truly persistating messages (wo using entitybeans and other tables directly)? Thank you in advance: Frank PS I (System Spec.): Jboss 4.0.1, PostgreSQL 7.4.6 PS II (postgres-jdbc2-service.xml): -------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <!-- $Id: postgres-jdbc2-service.xml,v 1.8 2004/08/20 10:33:49 ejort Exp $ --> <!-- ==================================================================== --> <!-- Persistence and caching using Postgres --> <!-- IMPORTANT: Remove hsqldb-jdbc2-service.xml --> <!-- ==================================================================== --> <!-- | The destination manager is the core service within JBossMQ --> <depends optional-attribute-name="MessageCache">jboss.mq:service=MessageCache <depends optional-attribute-name="PersistenceManager">jboss.mq:service=PersistenceManager <depends optional-attribute-name="StateManager">jboss.mq:service=StateManager <!-- | The MessageCache decides where to put JBossMQ message that | are sitting around waiting to be consumed by a client. | | The memory marks are in Megabytes. Once the JVM memory usage hits | the high memory mark, the old messages in the cache will start getting | stored in the DataDirectory. As memory usage gets closer to the | Max memory mark, the amount of message kept in the memory cache aproaches 0. --> 50 60 jboss.mq:service=PersistenceManager <!-- The PersistenceManager is used to store messages to disk. --> <!-- | The jdbc2 PersistenceManager is the new improved JDBC implementation. | This implementation allows you to control how messages are stored in | the database. | | This jdbc2 PM configuration has was supplied by Stephane Nicoll in the forums as an example for Postgres --> <depends optional-attribute-name="ConnectionManager">jboss.jca:service=DataSourceBinding,name=PostgresDS BLOB_TYPE=BYTES_BLOB INSERT_TX = INSERT INTO JMS_TRANSACTIONS (TXID) values(?) INSERT_MESSAGE = INSERT INTO JMS_MESSAGES (MESSAGEID, DESTINATION, MESSAGEBLOB, TXID, TXOP) VALUES(?,?,?,?,?) SELECT_ALL_UNCOMMITED_TXS = SELECT TXID FROM JMS_TRANSACTIONS SELECT_MAX_TX = SELECT MAX(TXID) FROM JMS_MESSAGES SELECT_MESSAGES_IN_DEST = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE DESTINATION=? SELECT_MESSAGE = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE MESSAGEID=? AND DESTINATION=? MARK_MESSAGE = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE MESSAGEID=? AND DESTINATION=? UPDATE_MESSAGE = UPDATE JMS_MESSAGES SET MESSAGEBLOB=? WHERE MESSAGEID=? AND DESTINATION=? UPDATE_MARKED_MESSAGES = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=? UPDATE_MARKED_MESSAGES_WITH_TX = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=? AND TXID=? UPDATE_MESSAGE = UPDATE JMS_MESSAGES SET MESSAGEBLOB=? WHERE MESSAGEID=? AND DESTINATION=? UPDATE_MARKED_MESSAGES = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=? UPDATE_MARKED_MESSAGES_WITH_TX = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=? AND TXID=? DELETE_MARKED_MESSAGES_WITH_TX = DELETE FROM JMS_MESSAGES WHERE TXID IN (SELECT TXID FROM JMS_TRANSACTIONS) AND TXOP=? DELETE_TX = DELETE FROM JMS_TRANSACTIONS WHERE TXID = ? DELETE_MARKED_MESSAGES = DELETE FROM JMS_MESSAGES WHERE TXID=? AND TXOP=? DELETE_TEMPORARY_MESSAGES = DELETE FROM JMS_MESSAGES WHERE TXOP='T' DELETE_MESSAGE = DELETE FROM JMS_MESSAGES WHERE MESSAGEID=? AND DESTINATION=? CREATE_MESSAGE_TABLE = CREATE TABLE JMS_MESSAGES (MESSAGEID INTEGER NOT NULL, DESTINATION VARCHAR(150) NOT NULL, TXID INTEGER, TXOP CHAR(1), MESSAGEBLOB BYTEA, PRIMARY KEY (MESSAGEID, DESTINATION)) CREATE_IDX_MESSAGE_TXOP_TXID = CREATE INDEX JMS_MESSAGES_TXOP_TXID ON JMS_MESSAGES (TXOP, TXID) CREATE_IDX_MESSAGE_DESTINATION = CREATE INDEX JMS_MESSAGES_DESTINATION ON JMS_MESSAGES (DESTINATION) CREATE_TX_TABLE = CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER, PRIMARY KEY (TXID) ) CREATE_TABLES_ON_STARTUP = FALSE --------------------------------- View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3861610#3861610 Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3861610 ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ JBoss-user mailing list JBoss-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jboss-user