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

Reply via email to