[jboss-dev-forums] [Design of Messaging on JBoss (Messaging/JBoss)] - Re: New wireformat and client side remoting

trustin do-not-reply at jboss.com
Mon Nov 5 09:13:25 EST 2007


"timfox" wrote : To kick off the discussion, here are my initial comments on Jeff's wiki:
  | 
  | In the diagram where you map MINA objects to JMS objects, we should remember that the JMS layer is a thin layer on the front.
  | 
  | MINA needs to map to a JMS agnostic layer (which may look a bit like JMS).
  | 
  | I'm thinking like the following:
  | 
  | 
  |   | JMS           Agnostic         MINA
  |   | ---           --------         ----
  |   | 
  |   |                                IoConnector  IoAcceptor
  |   |                                    \            /
  |   |                                     \ IoSession/
  |   | Connection----Connection------------------
  |   |     |                |
  |   |     |                |
  |   |   Session          Session
  |   |    / \                \
  |   | Producer Consumer     Consumer
  |   | 
  | I think Connection Session and Consumer are good abstractions for generic messaging
  | But Producer and Browser only live on the JMS side.
  | Producing messages and browsing can be methods on the agnostic Session class.

Looks great to me.

"timfox" wrote : Actually, currently the *only* messages we send asynchronously are:
  | 
  | 1) consumer change rate
  | 2) messages send (for non persistent messages)
  | 
  | All the rest are synchronous.
  | 
  | We could consider making the following asynchronous:
  | 
  | 1) Cancel delivery
  | 2) Start/stop connection
  | 
  | In terms of how to correlate requests and responses to give synchronous calls, it should be fairly simple to do something like the following:
  | 
  | 1) Send message with "request id" in message.
  | 2) Block thread and put in map with key of request id.
  | 3) When response comes back, look at request id.
  | 4) Lookup thread in map with that request id and wake it up.
  | 
  | Some kind of wait/notify should do the trick.

MINA 2.x provides exactly what you want as a filter.  Please take a look at here:

http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/reqres/

"timfox" wrote : Finally one other thing to think about is how MINA is going to support SSL and HTTP.

MINA already has support for SSL including StartTLS.  It's known to be very reliable.  SSL is provided as a filter so just inserting a new SSL filter will enable SSL immediately.  No sweat.

MINA recently imported AsyncWeb source code into its sandbox, and it should be included into the official distribution after some polishing.  MINA has an infra for implementing protocol codec and AsyncWeb provides HTTP codec on top of it.  Therefore, you can build your own lightest-weight web server very easily.  Please take a look at this example:

http://svn.apache.org/viewvc/mina/sandbox/asyncweb/example/src/main/java/org/safehaus/asyncweb/example/lightweight/

Please feel free to contact me or the MINA team whenever you need some support related with MINA including questions like 'does feature XXX supported in MINA?'  Actually we got most, and want to add as much as possible harmonizing all the features with each other.

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

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



More information about the jboss-dev-forums mailing list