I have some code that runs as a separate service that generates topics and when 
the message is
cleared, it then erases the topic after a predefined delay using the code below.

EraseQos eq = new EraseQos(glob);
eq.setForceDestroy(true);
EraseKey theEK = new EraseKey(glob, oid);
EraseReturnQos[] eraseArr = con.erase(theEK, eq);

When the erase happens, clients listening on the topic receive a callback with 
the qos.isErased()
set to true and can react to the erase.  However, I want to convert the code to 
run as a plugin so
that it will only be active when xmlBlaster is running.  The code runs, but I 
have run into a problem.
When I process the erase from within a plugin using the following code, then
clients listening on the topic do not receive a callback indicating the erase.

            updateKey = new UpdateKey(engineGlob, msgUnit.getKey());
            msgQosData = new MsgQosData(engineGlob, MethodName.ERASE);
            msgQosData.setForceDestroy(true);
            requestBroker.update(sessionInfo, updateKey, null, msgQosData);

Any thoughts on why the external erases seem to get propogated and the internal 
erases do not?
In all cases the topic appears to get erased, however, the clients do not know 
about the erase in
the second case.  Test have been run under 1.5.1.


Jonathan Clark
Open Roads Consulting, Inc.
757-546-3401

Reply via email to