On Mon, May 8, 2017 at 7:33 PM, Lakmal Warusawithana <lak...@wso2.com>
wrote:

> Hi Thilini,
>
> We had an offline discussion. Please see following scenarios and flow.
> Generally we need to add timestamp with the event. GW need to validate its
> action with the API core with timestamp of the event. This is valid for all
> event with relevant action. Believed these flow will solve the issue.
> Scenario 1:  Success MB connection & Success DB entry
>
> Publisher UI:
>
>             Create API à API Core
>
>
>
> API Core:
>
>             API Core à MB: Publish to topic API + Event + Timestamp
>
>             Success
>
>             API Core à DB
>
>             Success
>
>             API Core à API Publisher: API Create Success
>
>
>
> API GW:
>
>             MB à GW: received API + Event + Timestamp
>
>             GW à API Core: Service call to Core with API + Event +
> Timestamp
>
>             If matching with timestamp, retrieve the API
>
>
> Scenario 2:  Success MB connection & Failed DB entry
>
> Publisher UI:
>
>             Create API à API Core
>
>
>
> API Core:
>
>             API Core à MB: Publish to topic API + Event + Timestamp
>
>             Success
>
>             API Core à DB
>
>             Failed
>
>             API Core à API Publisher: Don’t allow save: ERROR
>
>
>
> API GW:
>
>             MB à GW: received API + Event + Timestamp
>
>             GW à API Core: Request API with API + Event + Timestamp
>
>             If not matching with timestamp ignore the event. No action
>
>
> Scenario 3:  Failed MB connection
>
> Publisher UI:
>
>             Create API à API Core
>
>
>
> API Core:
>
>             API Core à MB: Publish to topic API + Event + Timestamp
>
>             Failed
>
>             API Core à API Publisher: Don’t allow save: ERROR Failed
>
>
>

So in summary, what we are doing here is persist in API Core DB only if
publisihing to the MB is successful. First publish and then persist?

isf so +1

>
>
> On Mon, May 8, 2017 at 2:38 PM, Thilini Shanika <thili...@wso2.com> wrote:
>
>> Hi All,
>>
>> As per the APIM 3.0.0 architecture, the events such as APIM create,
>> update, delete, subscription create etc are notified to gateways through
>> JMS Topic in the broker. Thus, we need to smoothly handle the scenarios
>> like *broker not available* and *APIM to Broker connection(network)
>> failure,* since the flow cannot be completed without notifying the
>> gateway (A blocking call). Ideally, if the API action cannot be completed
>> due to broker connection failure, the users should be notified about the
>> failure and the action should be rolled back.
>>
>> But, we are facing some difficulties to handle topic publishing failures
>> and rollback API action(API create, API state change, API update, API
>> delete, subscription create, subscription block) since the API action is
>> getting persisted in APIM db layer prior to publishing to Gateway.
>>
>> For example, if an API create request is initiated from API core, first,
>> the API will be persisted in db layer. Then the API create event will be
>> published to Topic and the registered gateways will be notified. But if the
>> broker publishing step is failed, the gateways will not be notified on the
>> newly created API so that the API won't be published to gateway. This might
>> lead the API to go to an inconsistent/partially created state (API is
>> successfully created in db, but not pushed to gateway).
>>
>> ​
>> Currently, we have not implemented any mechanism to
>>
>>    - Rollback the action, or
>>    - Persist the inconsistent state as a flag in API so that the user is
>>    aware of the inconsistent state
>>
>> What would be the best way to handle broker failures? Any suggestions?
>>
>> Thanks
>> --
>> Thilini Shanika
>> Senior Software Engineer
>> WSO2, Inc.; http://wso2.com
>> 20, Palmgrove Avenue, Colombo 3
>>
>> E-mail: tgtshan...@gmail.com
>>
>>
>
>
> --
> Lakmal Warusawithana
> Director - Cloud Architecture; WSO2 Inc.
> Mobile : +94714289692 <+94%2071%20428%209692>
> Blogs : https://medium.com/@lakwarus/
>             http://lakmalsview.blogspot.com/
>
>
> _______________________________________________
> Architecture mailing list
> Architecture@wso2.org
> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
>
>


-- 
Thanks & Regards,

Fazlan Nazeem

*Senior Software Engineer*

*WSO2 Inc*
Mobile : +94772338839
<%2B94%20%280%29%20773%20451194>
fazl...@wso2.com
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to