API Orchestration to different consumers

Hi Experts,

This is my below requirement, please let me know if the same can be achieved using Apigee.

I am looking to achieve below requirements and host all services/interface in AWS cloud

Service 1:
  • A timer based services/Proxy that would call SOAP/HTTP service to retrieve some ID's and publish them on to a message queue or some something similar

Service 2:
  • Should read ID from message queue published by Service 1
  • Should call a SOAP/HTTP service to retrieve additional details
  • Should validate SOAP response against a xsd (eg. Orgin_Response.xsd)
  • Transform SOAP Response to a xml message based on Target_Response.xsd
  • Publish transformed message to a queue from where other consumers can read the message

Also, in certain cases there could be some business logic required when data needs to be transformed from SOAP response based on Orgin_Response.xsd to Target_Response.xsd. E.g.. transformation of SOAP response received in Service2 should be done only when a flag(xml field) is 'Prom' else that response will be ignored. Can you please assist me to know if I will be able to achieve the same using Apigee.

0 1 371
1 REPLY 1

A timer based services/Proxy

A proxy is not timer based. a Proxy handles an inbound request, and then makes a different outbound request based on that inbound request. If you want a scheduled task, then you could look into a scheduler like https://cloud.google.com/scheduler/, or build your own agent in nodejs or something, that runs forever and periodically wakes up and does the thing you want. There are node modules to help you do that. Apigee Edge is not the right place to host scheduled services.

Should read ID from message queue

Apigee Edge is an HTTP message proxy: an HTTP client sends a request in, and then Apigee Edge does something with that request. If you want a service that reads from a message queue, that's not Apigee Edge. You probably want to build something for yourself that runs in Google App Engine or similar. Again you could write it in nodejs or your favorite other language.

Good luck!