REQUIREMENT queue.jdbc.postgres |
Type | NEW |
Priority | HIGH |
Status | CLOSED |
Topic | XmlBlaster has an advanced queuing facility. Among others one tested persistence layer is offered by communicating with a postgres database. | ||||||||||||||||||||||||||||||||||||||||
Des cription |
The generic plugin for jdbc based queues has been tested against postgres (postgres 7.2.2 up to 7.4.5 and 8.0-RC2 on linux and 8.0-RC2 on Windows). To make xmlBlaster run with a persistent queue stored on postgres it is necessary to first install postgres. In some of the linux distributions postgres comes along. For others, you can download it from the postgres homepage. Please follow the instructions given there on how to download, install and initially configure postgres.. Keep in mind that you also need to install on your machine the jdbc driver working with postgres. You can download it from http://jdbc.postgresql.org/download.html and put it somewhere in your classpath. To keep it simple you can put the jar file (for example pgjdbc2.jar) in the $XMLBLASTER_HOME/lib directory. If you have not initialized postgres previously, you should do it now by invoking $PGRES_HOME/bin/initdb -D $PGRES_HOME/dataas the user postgres, where '$PGRES_HOME' is the base directory where you installed your postgres (for example in /usr/local/pgres). Once postgres has been initialized you can start the server. Since we are communicating via TCP/IP with the jdbc driver, we need the '-i' switch on, for example: postmaster -i -N100 -B200 -D /usr/local/pgres/datathe -N50 flag and -B100 are needed if you want to run the complete testsuite since it will consume quite a big amount of tcp/ip connections. If you did'nt create a db before you can do it now. Lets suppose we call the database 'test', then what you have to do is invoke createdb testAnd now you still have to configure xmlBlaster in order to be able to find the db. Lets say you run it in the standard port on your localhost and under the user postgres (you don't need a password for that user). If you choosed these settings you should be able to start xmlBlaster and automatically have the persistence queues writing their data on postgres. If you specified someting diffenrent for the db name, the user, the hostname or the port, please read more under 'configuration'. Administrative maintenance during operationPostgres tends to slow down drastically after some 100 thousand messages. To gain performance again you should always again start vacuumdb to clean up Postgres. This is possible in hot operation of xmlBlaster. vacuumdb -f -v test This example starts vacuumdb every 2 minutes for an xmlBlaster under heavy load with persistent messages: while [ 1 ] ; do echo "***** Starting vacuumdb *****" vacuumdb -f -v test echo "Sleeping until next vacuumdb" sleep 120 done On Linux you should try to improve hard disk performance with the hdparm command which can in many cases increase hard disk and persistent message throughput significantly: hdparm -d1 -c3 /dev/hda hdparm -t /dev/hda |
||||||||||||||||||||||||||||||||||||||||
Example Java |
<qos> <queue maxEntriesCache='1000' maxBytesCache='4000' maxEntries='10000' maxBytes='1000000000' onOverflow='deadMessage'/> </qos> |
||||||||||||||||||||||||||||||||||||||||
Configure |
These parameters allow to configure a cache queue running with postgres
How to switch to PostgresPlease edit xmlBlaster.properties following the example below, typically you need to change the url setting to suit your environment. JdbcDriver.drivers=sun.jdbc.odbc.JdbcOdbcDriver:org.postgresql.Driver:... JdbcStorage[postgres]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\ url=jdbc:postgresql://localhost/test,\ user=xmlblast,\ password=,\ connectionPoolSize=1,\ connectionBusyTimeout=90000,\ maxWaitingThreads=300,\ tableNamePrefix=XB_,\ entriesTableName=ENTRIES,\ dbAdmin=true StoragePlugin[JDBC][1.0]=${JdbcStorage[postgres]} QueuePlugin[JDBC][1.0]=${JdbcStorage[postgres]} JdbcDriver.mapping[postgres]=string=text,longint=bigint,int=integer,boolean=char(1)
NOTE: Configuration parameters are specified on command line (-someValue 17) or in the
xmlBlaster.properties file (someValue=17). See requirement "util.property" for details. |
||||||||||||||||||||||||||||||||||||||||
See API | org.xmlBlaster.util.queue.I_Queue | ||||||||||||||||||||||||||||||||||||||||
See API | org.xmlBlaster.util.queue.jdbc.CacheQueuePlugin | ||||||||||||||||||||||||||||||||||||||||
See API | org.xmlBlaster.util.queue.QueuePluginManager | ||||||||||||||||||||||||||||||||||||||||
See API | org.xmlBlaster.util.queue.I_QueueEntry | ||||||||||||||||||||||||||||||||||||||||
See API | org.xmlBlaster.util.qos.storage.QueuePropertyBase | ||||||||||||||||||||||||||||||||||||||||
See API | org.xmlBlaster.util.I_Plugin | ||||||||||||||||||||||||||||||||||||||||
See API | org.xmlBlaster.util.Global | ||||||||||||||||||||||||||||||||||||||||
See REQ | queue | ||||||||||||||||||||||||||||||||||||||||
See TEST | org.xmlBlaster.test.classtest.queue.I_QueueTest | ||||||||||||||||||||||||||||||||||||||||
See TEST | org.xmlBlaster.test.classtest.queue.JdbcQueueTest | ||||||||||||||||||||||||||||||||||||||||
See TEST | org.xmlBlaster.test.classtest.queue.CacheQueueTest |
This page is generated from the requirement XML file xmlBlaster/doc/requirements/queue.jdbc.postgres.xml