[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
PTD & Persistence ... le retour ;o)
Hi Marcel ,
it's again and again the same guy wich is polute your mailbox with the
same subject !
;o) So, in some mail I tried to change the subject , for the same eternal
problem. At each time you stopped the thread. Like if the subject is
horrible ;o)
What subject ?
When using Persistence Message and Destination Qos with ForceQueuing,
the persistent message file is never erased from filesystem.
To reproduce the problem just make a little modification in
testsuite.org.xmlBlaster.TestPtDQueue.java
in public void testPtUnknownDestination()
when Construct a message and send it to "Martin Unknown"
just add <isDurable /> in the Qos
code would be like :
// Construct a message and send it to "Martin Unknown"
String xmlKey = "<key oid='' contentMime='text/plain'>\n</key>";
String qos = "<qos> <isDurable /> " // <-- add just this flag
+" <destination queryType='EXACT'>"
+receiverName
+" <ForceQueuing />" +
" </destination>"
+"</qos>";
...
So, I take my brain and go in the xmlBlaster engine to trace all the
operations ...
look at that scenario :
1/ RequestBroker.loadPersistentMessages()
do a publish() of messages found in persistence folder.
2/ RequestBroker.publish()
...
if (publishQoS.isPubSubStyle()) {
...
messageContainerMap.put();
...
}else if (publishQoS.isPTP_Style()) {
...
destinationClient.sendUpdate(); // <-- Go there
...
}
3/ ClientInfo.sendUpdate()
... client not logged ...
queueMessage(msgUnitWrapper, destination);
4/ ClientInfo.notifyAboutLogin() {
...
if (messageQueue != null) {
...
while (true) {
MessageUnitWrapper msgUnitWrapper = messageQueue.pull();
...
But at any time the PersistenceDriver will be notified that it has to
erase a message.
It's why my last posted messages ask for a code guideline to decide where
it is possible and the 'right place' to code this notification. I didn't
found any idea, because ClientInfo seems to doesn't know the
RequestBroker wich handled the persistenceDriver....
Perhaps ClientInfo can send a xmlBlaster message to the RequestBroker
engine (without isDurable) to erase this knid of message ?? ;o)
Voilą Marcel ...
It's where I'm blocking when I try to design the system architecture for
my current project.
Perhaps Guys who has developped the PersistenceDriver can get a idea
about that ?
The rest of xmlBlaster is working fine.
I'll tell you more in few weeks when the project will be in test, online.
Cyrille