HTTP Smart Proxy in Spring Cloud Stream - spring-cloud

is there any way to implement the Smart Proxy Pattern under Spring Cloud Streams? Having a HTTP Source that get a request connected to other micro services (or processors) and finally return the response through the same connection that was made in the request?
Using Spring Cloud Data Flow maybe it is difficult but by using the Spring Cloud Stream should be possible isn't it?
Thanks.

Related

Localhost Spring Boot service not found

I am studying Spring Cloud and I am developing a study project.
I create a project that represents a simple REST API using Spring Boot and I run this in localhost.
I also created another project API Gateway, this one gets the request coming and calls the REST API, I am also running this one in localhost.
When I run the REST API and send a request to it, it responds properly, but if I send the request to API Gateway when API Gateway tries to call the REST API using RestTemplate it is getting this exception:
java.lang.IllegalStateException: No instances available for localhost
Both services are running in localhost.
Do anyone knows what is the cause of this error?

How to log request and response body into database in spring cloud gateway?

I would like to log request and response body into database in spring cloud gateway. I am new at Spring Cloud Gateway and at Spring Webflux.
Could you please help about it?

Spring cloud ingestion layer (API Gateway for protocol transformations)

I am looking for an open source API Gateway that can do protocol transformations (Spring Cloud offers Zuul but it accepts only REST connections and does not do protocol transformations). Any idea (or clever solution) given that most of the following protocols must be supported?
CoAP
AMQP
MQTT (must be supported)
STOMP
REST (must be supported)
Sine the next hop after the API Gateway, I was thinking Spring Cloud Stream with custom inbound/outbound adapters. There is also the Spring Cloud Data Flow but I think that is it a different beast.
PS: Oracle API Gateway seems to support multiple protocols but I am looking for an open source solution.

IMS as RESTful WebService Consumer

We need to expose IMS as RESTful webservice consumer. I had referred a document "Creating a RESTful Web Service for IMS-Transaction" by Ivy Ho, which talks about exposing IMS as RESTful webservice provider. In that document they selected an OUTBOUND adapter option while creating an J2C bean(Page Num 4), which makes the data to be passed from application to adapter. Is it possible if I opted INBOUND adapter which makes the data to be passed in to the application from the adapter, will it help me to expose IMS as RESTful consumer.
If any proven methods are available, to expose our application as RESTful webservice consumer, kindly share the same ?
Is it possible in the SOAP GATEWAY server to handle REST calls of the client application. So my core application can consume the REST response of client application after the data mapping in the SOAP GATEWAY server.
Kindly share your views and thoughts. Thanks in advance.
The recommended route for your IMS application to consume an external REST service would be through the API Requester function for z/OS Connect EE. The following link provides a step by step guide for doing exactly what you want: https://www.ibm.com/support/knowledgecenter/en/SS4SVW_3.0.0/com.ibm.zosconnect.doc/scenarios/ims_apiReq_intro.html
The reason this would be recommended is it funnels all outbound calls through a single gateway which can be monitored, modified, and updated without affecting your applications.
SOAP Gateway will not be able to handle REST calls. I suggest looking into IMS Mobile Feature pack which is a restful endpoint for IMS.
IMS Mobile Feature Pack Description:
This feature provides a RESTful endpoint for mobile services to access back-end IMS resources through IMS Connect. A data transformation module is included that converts request and response messages between JSON and the native representation of the input and output messages. Tooling support for modeling, creating, testing, and managing services is provided through IMS Enterprise Suite Explorer for Development.
reference:
https://developer.ibm.com/wasdev/downloads/#asset/features-com.ibm.ims.imsmobile-1.0
https://developer.ibm.com/wasdev/downloads/#asset/features-com.ibm.ims.imsmobile-2.0

Spring Cloud RPC transport

Almost every spring-cloud guide suggests Ribbon with Feign for RPC.
I wonder why Http Rest takes precedence over binary transport protocol for inner micro-services communication behind the API gateway?
What are the binary alternatives to http that support async invocation and all great features that Netflix OSS provides ? (auto-discovery, load-balancing, circuit breaker, retry policy etc.)
Thanks
There is nothing preventing you from using binary RPC like thrift or protobuffs or msgpack with spring cloud. You can use LoadBalancerClient.choose(<serviceId>) to get a host and port you could supply to any network client. Our integrations were the simple rest clients.
Here is a guide that integrates Spring MVC with google protocol buffers.