[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [xmlblaster] Release 1.2 fail-safe: reconnected and publishing, but no sync GET possible
Johann Thomas wrote:
Hello Marcel,
I have a standalone server node and few clients. I do persistent
subscribes, publishes and gets (both xpath and oid) and erase, but
ignore updates (incoming messages).
Seems I have some misunderstandings relating the client queuing: I
switched to Oracle on client side (not sure it worked), now I tried if
fail-safe still works, but only publishes work after the restart of
the xmlBlaster standalone server. The message queued on client side is
delivered after reconnect, also further publishes work. Also, no
XB_ENTRIES table is created in Oracle.
This works fine here, the XB_ENTRIES is properly created in my oracle by
the client
(the server ran with HSQLDB).
My clients xmlBlaster.properties:
---------------------------------
JdbcStorage[Oracle]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\
url=jdbc:oracle:thin: at myhost:1521:xmlb,\
user=xmlblaster,\
password=secret,\
connectionPoolSize=1,\
connectionBusyTimeout=90000,\
maxWaitingThreads=300,\
tableNamePrefix=XB_,\
entriesTableName=ENTRIES,\
dbAdmin=true
StoragePlugin[JDBC][1.0]=${JdbcStorage[Oracle]}
QueuePlugin[JDBC][1.0]=${JdbcStorage[Oracle]}
JdbcDriver.drivers=oracle.jdbc.driver.OracleDriver
JdbcDriver.mapping[Oracle]=string=VARCHAR(128),longint=NUMBER(19),int=NUMBER(10),blob=BLOB,boolean=CHAR(1)
...
---------------------------------
The stack trace below tells you that we don't support doing a get() call
during we are offline
as we currently don't have a way to pass you back the returned messages
in async mode (when on reconnect the get()s are send).
It would be possible by our client library to deliver those using the
update() but this is not implemented,
see the table
"Client side queuing during reconnect-polling" at
http://www.xmlblaster.org/xmlBlaster/doc/requirements/client.failsafe.html#queuing
(as noted in the exception below),
regards
Marcel
At the client side I have configured:
------snip---------
JdbcStorage[Oracle]=org.xmlBlaster.util.queue.jdbc.JdbcQueueCommonTablePlugin,\
...\
entriesTableName=ENTRIES,\
dbAdmin=true
StoragePlugin[JDBC][1.0]=${JdbcStorage[Oracle]}StoragePlugin[RAM][1.0]=org.xmlBlaster.engine.msgstore.ram.MapPlugin
# avoid meat caching!
StoragePlugin[CACHE][1.0]=${JdbcStorage[Oracle]}
#
QueuePlugin[JDBC][1.0]=${JdbcStorage[Oracle]}
QueuePlugin[RAM][1.0]=org.xmlBlaster.util.queue.ram.RamQueuePlugin
QueuePlugin[CACHE][1.0]=org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin,persistentQueue=JDBC,transientQueue=RAM
JdbcDriver.drivers=\
oracle.jdbc.driver.OracleDriver
------/snap------
Client init:
------snip---------------
// ...
qos.setPersistent(true);
//...
qos.setSessionName(...);
// Setup fail-safe handling ...
Address addressProp = new Address(m_oXGlob);
addressProp.setDelay(4000L); // retry connecting every 4 sec
addressProp.setRetries(-1); // -1 == forever
addressProp.setPingInterval(0L); // switched off
qos.getClientQueueProperty().setMaxEntries(1000); // queue up to 1000
// messages
m_oXCon.registerConnectionListener(new I_ConnectionStateListener() {
// logs events
...
};
m_oXCon.connect(qos, new I_Callback() {
public String update(String cbSessionId, UpdateKey updateKey,
byte[] content, UpdateQos updateQos)
{
// ...
return ""; }
};
------/snap------
Exception log:
------snip---------
ERROR: trace:
errorCode=user.configuration message=#14953M Synchronous GET on
oid='null' is not possible in offline/polling mode. See
'http://www.xmlBlaster.org/xmlBlaster/doc/requirements/client.failsafe.html'
for more details.
at
org.xmlBlaster.client.dispatch.ClientDispatchConnectionsHandler.createFakedReturnObjects(ClientDispatchConnectionsHandler.java:157)
at
org.xmlBlaster.util.dispatch.DispatchManager.putPost(DispatchManager.java:572)
at
org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin.put(CacheQueueInterceptorPlugin.java:568)
at
org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin.put(CacheQueueInterceptorPlugin.java:442)
at
org.xmlBlaster.client.XmlBlasterAccess.queueMessage(XmlBlasterAccess.java:753)
at
org.xmlBlaster.client.XmlBlasterAccess.get(XmlBlasterAccess.java:866)
...
DEBUG: Connection, state(==m_oXCon.getState()): ALIVE
DEBUG: try refresh: trace:
errorCode=user.configuration message=#14953M Synchronous GET on
oid='__refresh' is not possible in offline/polling mode. See
'http://www.xmlBlaster.org/xmlBlaster/doc/requirements/client.failsafe.html'
for more details.
at
org.xmlBlaster.client.dispatch.ClientDispatchConnectionsHandler.createFakedReturnObjects(ClientDispatchConnectionsHandler.java:157)
at
org.xmlBlaster.util.dispatch.DispatchManager.putPost(DispatchManager.java:572)
at
org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin.put(CacheQueueInterceptorPlugin.java:568)
at
org.xmlBlaster.util.queue.cache.CacheQueueInterceptorPlugin.put(CacheQueueInterceptorPlugin.java:442)
at
org.xmlBlaster.client.XmlBlasterAccess.queueMessage(XmlBlasterAccess.java:753)
at
org.xmlBlaster.client.XmlBlasterAccess.get(XmlBlasterAccess.java:866)
at
org.xmlBlaster.client.XmlBlasterAccess.refreshSession(XmlBlasterAccess.java:416)
------/snap------
Regards,
Johann Thomas
P.S.: Sorry if it hits the list more than once...
--
(sent with Mozilla)