mina-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brad Harvey <harve...@gmail.com>
Subject Re: How To Handle Request Reply
Date Thu, 04 Mar 2010 10:50:47 GMT
Is this still applicable?

https://issues.apache.org/jira/browse/DIRMINA-92?focusedCommentId=12488311&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_12488311


Emmanuel Lecharny wrote:
> On 3/3/10 6:45 PM, Carlo Camerino wrote:
>> HI,
>>
>> I would like to ask on how to handle request reply with apache mina.
>> How do i ensure that when a thread sends a message, the thread gets
>> the reply for that message.
>> What happens is, at very highly concurrent scenario a thread gets the
>> response of another thread.
>>    
> Mina is asynchronous. When you send a request, you can't simply wait 
> for the response. The Handler will get the response back and you have 
> to correlate this response with the request.
>
> Now, each connection is associated with a session, so if you send a 
> request in a session, you have the guarantee that this session will 
> receive the response.
>
> So one option is to store the response as an attribute of your 
> session, so that your thread can get it back later.
>
> Remains one issue : you don't want to poll the session until the 
> response is stored into it, otherwise you'll lose the benefit of using 
> an asynchronous framework.
>
> You have many ways to deal with this :
> - you simply call session.read(), you'll get back a readFuture. You 
> then just have to wait() on it, and you'll get the response in the 
> readFuture when it's back
> - store a callback in the session, and when the response arrives, the 
> callback will be called
> - use a synchronization mechanism your main thread will wait on, and 
> when the message arrives, you release the lock so that the requester 
> is waken up
>
> That's the three that come to my mind, but there are probably other 
> scenarii.
>
> Hope it helps
>

Mime
View raw message