Hi

On Wed, Aug 28, 2013 at 10:44 AM, Kasun Indrasiri <[email protected]> wrote:

> We had a design and code review on the blocking sender implementation on
> top of non-blocking transports. The new implementation works fine with
> almost all the scenarios (including complex scenarios such as
> iterate/clone/aggregate) and for all proxy services/sequence/apis.
> The new JIRA connector is implemented with the new blocking sender
> impl/HTTP Endpoint.
> So, I think we are good to go ahead with this. This greatly simplifying
> most of the service chaining scenarios where we had to use both in-out
> sequences.
>
> sample config :
>
> ...
> <send continuation="true">
>          <endpoint>
>                   <http method="POST" uri-template="{uri.var.jira.ur
> l}/rest/api/2/issue" />
>           </endpoint>
> </send>
> <!-- flow resumes from here  -->
>

For a user, what is the difference/advantage using <send
receive="someSequence"/> vs <send continuation="true"/>


> ...
>
>
> On Tue, Aug 13, 2013 at 12:19 AM, Isuru Udana <[email protected]> wrote:
>
>> Hi All,
>>
>> Before differing this task, I implement a quick POC and manage to get
>> this to work for the sequence flows which does not contain list mediators
>> like Filter, Switch etc.
>>
>> Flow
>> ------
>>
>> Proxy
>>     InSequence
>>             Log - IN SEQ P1
>>             Sequence Mediator   ---->   Sequence 1
>>             Log - IN SEQ P2                       Log - SEQ1 P1
>>                                                             Sequence
>> Mediator  ---->     Sequence 2
>>                                                             Log - SEQ1 P2
>>                        Log - SEQ2 P1
>>                                                             Send
>>                               Send
>>                                                             Log - SEQ1 P3
>>                        Log - SEQ2 P2
>>
>>
>> Output on the console
>> -------------------------------
>>
>> [2013-08-09 20:20:12,283]  INFO - LogMediator MSG = IN SEQ P1
>> [2013-08-09 20:20:12,285]  INFO - LogMediator MSG = SEQ1 P1
>> [2013-08-09 20:20:12,286]  INFO - LogMediator MSG = SEQ2 P1
>> [2013-08-09 20:20:12,303]  INFO - LogMediator MSG = SEQ2 P2
>> [2013-08-09 20:20:12,304]  INFO - LogMediator MSG = SEQ1 P2
>> [2013-08-09 20:20:12,320]  INFO - LogMediator MSG = SEQ1 P3
>> [2013-08-09 20:20:12,321]  INFO - LogMediator MSG = IN SEQ P2
>>
>>
>> Rather than implementing a new mediator, I introduced a new parameter for
>> the send mediator called "continuation".
>>
>> <send continuation="true"/>
>>
>> After setting the continuation to true, mediation is continued from the
>> next mediator placed after the send mediator with the received response.
>> When flow is completed in a particular sequence, mediation will be
>> continued from the parent sequence. Behavior is identical to the Callout
>> mediator.
>>
>> Over the weekend, I put some effort to see whether I can extend this to
>> support sequence flows which contains other list mediators like Filter,
>> Switch, etc and managed to get it to work.
>> And managed to get this to work for Templates as well.
>>
>> Design in brief
>> ---------------------
>>
>>    - To keep track of sequence branching, a stack (called 'Sequence
>>    Calls Stack') is kept in the message context which is similar to the fault
>>    stack.
>>    - Every time when we branch to a new sequence, a entry (called
>>    'SequenceCall') is pushed in to the stack.
>>    - A SequenceCall contains the sequence name and the position of the
>>    mediator in the sequence.
>>    - When branching to a new sequence, top is updated with the current
>>    mediator position.
>>    - When message is sent out from the send mediator, top is updated
>>    with the current mediator position and a property is added to the message
>>    context to indicate continuation=true. And flow will be stopped from 
>> there.
>>    - When response is received, while injecting the response at the
>>    Axis2SynapseEnvironment, it checks for the continuation property from the
>>    message context. If it is present, it will peek the stack and using the
>>    information contain in that peeked SequenceCall, mediation will be
>>    continued from where it stopped earlier.
>>
>> Above is a very high level description of the design I came up with.
>> Actual design which I implemented to support other list mediators and
>> templates is bit more complex than this.
>>
>> Today I had a peer review with Kasun on this implementation.
>> Source of the current implementation is located at [1] and tested
>> artifacts are located at [2].
>>
>> [1]
>> https://svn.wso2.org/repos/wso2/people/isuruu/non-blocking-callout-impl/2.1.1-wso2v8
>> [2]
>> https://svn.wso2.org/repos/wso2/people/isuruu/non-blocking-callout-impl/test-artifacts
>>
>>
>> Thanks,
>> IsuruU
>>
>>
>> On Mon, Aug 12, 2013 at 10:42 PM, Sanjiva Weerawarana 
>> <[email protected]>wrote:
>>
>>> As discussed .. this is not a real need so we'll defer.
>>>
>>>
>>> On Thu, Aug 8, 2013 at 3:07 PM, Kasun Indrasiri <[email protected]> wrote:
>>>
>>>> We have been discussing the $subject for  sometime and I guess now we
>>>> have a real requirement for this with connectors. Since most connectors
>>>> uses callout mediator for external calls, we will surely experience
>>>> perf-issues when the connectors are used in real world scenarios.
>>>>
>>>> So, we should make callout work with non-blocking transports. This is
>>>> not a trivial thing to implement as we have to implement a blocking
>>>> scenario on top of a non-blocking transport, but it should be possible to
>>>> do something along the lines of receiving seq impl we have at the moment.
>>>>
>>>> Isuru is currently looking for a possible design to implement this.
>>>>
>>>> --
>>>> Kasun Indrasiri
>>>> Software Architect
>>>> WSO2, Inc.; http://wso2.com
>>>> lean.enterprise.middleware
>>>>
>>>> cell: +94 71 536 4128
>>>> Blog : http://kasunpanorama.blogspot.com/
>>>>
>>>
>>>
>>>
>>> --
>>> Sanjiva Weerawarana, Ph.D.
>>> Founder, Chairman & CEO; WSO2, Inc.;  http://wso2.com/
>>> email: [email protected]; phone: +94 11 763 9614; cell: +94 77 787 6880| +1
>>> 650 265 8311
>>> blog: http://sanjiva.weerawarana.org/
>>>
>>> Lean . Enterprise . Middleware
>>>
>>
>>
>>
>> --
>> *Isuru Udana*
>> *
>>  *
>> Senior *
>> Software Engineer
>> *
>> WSO2 Inc.; http://wso2.com
>> email: [email protected] cell: +94 77 3791887
>> blog: http://mytecheye.blogspot.com/
>> twitter: http://twitter.com/isudana
>>
>
>
>
> --
> Kasun Indrasiri
> Software Architect
> WSO2, Inc.; http://wso2.com
> lean.enterprise.middleware
>
> cell: +94 71 536 4128
> Blog : http://kasunpanorama.blogspot.com/
>
> _______________________________________________
> Architecture mailing list
> [email protected]
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>


-- 
Thanks
/subash

*Subash Chaturanga*
Senior Software Engineer :Integration TG; WSO2 Inc. http://wso2.com

email: [email protected]
blog:  http://subashsdm.blogspot.com/
twitter: @subash89
phone: +9477 2225922
Lean . Enterprise . Middleware
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to