[jboss-dev-forums] [Design of Messaging on JBoss (Messaging/JBoss)] - Re: Remoting - Client Asynchronous Calls

ovidiu.feodorov@jboss.com do-not-reply at jboss.com
Fri Oct 20 02:43:44 EDT 2006


Tim wrote : 
  | For pushing from server->client, for the reasons already stated (latency problems) an RPC model will ruin performance.
  | 

As far as I remember, the current code relies on the fact that it receives an acknowledgment (in the form of an exception NOT being thrown) for each server->client delivery.

Tim wrote : 
  | For sending from client to server, yes you are correct in stating this must be RPC, for JMS at least, although AMQP is less strict on this and allows asynchronous send I believe.
  | 

Well, in this case AMQP has a problem if it doesn't also provide for synchronous client-to-server delivery. Need to hit the books, to make sure this is (or not) the case.

Tim wrote : 
  | So, for JMS, to maximise sending throughput for a high latency network would be done on the application level by sending messages in transactions with multiple messages per transaction. This allows many messages to be sent in one RPC.
  | 

Right. So ConnectionEnpoint.sendTransaction() IS a RPC.

Tim wrote : 
  | Let's be clear on this. I am not advocating an all or nothing asynchronous approach. Of course some operations need to be synchronous.
  | 

We're clear. We need both. And this needs to be reflected in the Remoting API. I'll soon add the document with the proposed changes.


Tim wrote : 
  | However most of the operations (with the exception of send) on the primary execution paths can probably be done asynchronously.
  | These are the ones that need to be fast, they include:
  | Sending messages from server=>client
  | Flow control messages (currently just more()) but we will need to extend this probably.
  | Acknowledgements (I am pretty sure but not 100% about this one - it needs more thought)
  | 

This is exactly what I was saying. See above (or below):

Ovidiu wrote : 
  | This leaves us SessionEndpoint.acknowledgeBatch(), SessionEnpoint.acknoweldge() and ConsumerEndpoint.more() that can arguably improve the throughput if they're made asynchronous. Also, sending the message to the client for delivery is a good candidate for asynchronicity.
  | 



View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3979562#3979562

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3979562



More information about the jboss-dev-forums mailing list