As a followup to my previous email, it appears that the
erased topics are still in the database in
the case where they are erased from the plugin, but
they do appear to be cleaned up from the
database in the external service
case.
Are there know side affects of using a client side
connection from within a plugin? This seems
to be the only option to erase topics successfully from
within the plugin.
Thanks
______________________________________________________________________________
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