I guess the question is whether we want to duplicate the JMX functionality. My thought was to keep this callback really simple, but still supply the essential information (basically, that the message has made it through to the far end) to the client. I suppose it would be easy enough to add another method to supply information at the start of the sending process, too:

interface RMCallback {
    void messageAccepted(String seqId, long msgNum);
    void messageAcknowledged(String seqId, long msgNum);
}

This way they'd have all the information to identify the message, and if they want to take full control over the process they can use this information through the JMX interface. How does that sound to you?

I can still supply the simple counting implementation that just lets the client check whether all the messages have been acknowledged yet.

  - Dennis

On 02/17/2014 10:14 PM, Aki Yoshida wrote:
Hi Dennis,

right. It would be useful to make some information conveniently
available to the calling client.

But we might want to provide a callback not just for getting the ack
status but for getting various other WS-RM information such as the
sequence ID, message number and even some control over the messages
and sequences it created?

Or I am not sure if we should give the sequence info back in the
callback and let the client use jmx to get more info and exercise
control over the sequence?

regards, aki

2014-02-14 8:15 GMT+01:00 Dennis Sosnoski <[email protected]>:
It's important for clients using WS-RM to know when all the messages they've
sent have been acknowledged, because it's not safe for them to terminate
until this has been done. Right now we're able to use JMX to monitor
WS-ReliableMessaging operation and see when messages are acknowledged. But
this seems overly complex to me, and I'm thinking of adding a simpler
callback mechanism to make it easier.

The basic interface would be something like:

interface AcknowledgementCallback {
     void messageAcknowledged();
}

I could also supply an AcknowledgementCountingCallback implementation which
would just count how many times it's been called, and define a waitFor(n,
timeout) method on this which would wait until that many messages had been
acknowledged (or until timed out). That way an instance could be set as a
client property, and the user could just count how many messages they'd sent
and when they're done call the waitFor() method to make sure they'd all been
received before the application terminates.

Any objections or better ideas?

Thanks,

   - Dennis

Dennis M. Sosnoski
Java Web Services Consulting <http://www.sosnoski.com/consult.html>
CXF and Web Services Security Training
<http://www.sosnoski.com/training.html>
Web Services Jump-Start <http://www.sosnoski.com/jumpstart.html>


Reply via email to