How we can integrate Springboot 2.x with Zuul 2 - spring-boot

We have a springboot application which is currently having gateway as Zuul 1. Our application is running in Springboot 2.0.0.M2. We are trying to upgrade our Zuul gateway to Zuul 2. We created a springboot application with Zuul 2 dependency and added webflux dependency to get Netty server. The server starts fine, but we are still unclear that how the springboot application will understand that this is a gateway and filters needs to be executed. Although we have created Routes filter, but the same is not getting invoked.
Thanks in advance,
Ron

if you go through the video "https://www.youtube.com/watch?v=9wocKqF15B8" at 18:00 from spring developers. They clearly stated that zuul2 is not going to be supported by the spring ecosystem. Also, the replacement of zuul2 (non-blocking calls) is a spring cloud gateway which is also non-blocking calls.

Related

Any chance Spring Zuul updated for Spring boot 2.4.x?

TLDR
Any chance of getting spring cloud netflix zuul 1 running on spring boot 2.4?
Context:
We have an app that uses spring zuul 1 and runs on spring boot 2.3.x
zuul simply "doesn't work" on spring boot 2.4.x, i.e. wasn't updated to run on spring 2.4.x.
I would have expected to see 'deprecation' or 'end of life' warnings. Maybe I missed them.
Why we care
Spring boot 2.4.x adds nice functionality for building docker images; this functionaltiy doesn't work on spring 2.3.x .
e.g..
The generated image can be published to a Docker registry by enabling a publish option and configuring authentication for the registry using docker.publishRegistry properties.
https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/
Question
Any chance that zuul 1 maintainers will updat zuul 1 to run on spring 2.4? If so, when?
Any documentation on "migrating from zuul1 to spring cloud gateway"
We ran into a few 'gotchas' with zuul--so know that switching from zuul to spring cloud gateway might require non-trivial work.
Thanks!

Spring Reactive WebSocket does not come up when spring-web is present

I have an existing spring web application that uses spring-boot-starter-web; I have been planning to introduce reactive into this application. For a new feature that I am working, I have pulled in spring reactive web socket, configured and coded as specified in the spring doc; but unfortunately it does not work (got 404).
I tried a sample application and that works perfectly.
I used this one as my sample application.
I found that the sample application comes up on Netty, not on Tomcat. So I added spring-boot-starter-web to it, got the server to start in Tomcat and got the same 404 as I got in my application.
I also added TomcatRequestUpgradeStrategy unsuccessfully.
should I assume that spring-web and spring-webflux conflict with each other and I should go back to the regular websocket? Please advise.
Spring said that if both spring web and spring webflux present in the classpath; spring web kicks in and reactive websocket won't come up.
More details here: https://github.com/spring-projects/spring-boot/issues/23236

Spring Reactive stream is not working with Netflix Zuul Reverse proxy

We created 7 micro-services for our project and all are exposed through zuul proxy.
One of the micro service(Live-dashboard) contains Spring boot reactive stream for live dashboard refresh using (Server sent events).
The reactive stream is working fine through Live Dashboard micro-service direct rest api (http://localhost:8092/live/dashboard).
But stream is not working through zuul proxy (http://localhost:8091/rest/livedashboard/live/dashboard) it is giving normal api response.
Please give suggestions anyone having any ideas, how reactive stream is working through zuul proxy?
If you are using 1.x version of zuul, it does not support server sent events. You can find the thread and the response of the contributor here.
As mentioned in the link, It is supported in zuul 2.x versions. So using 2.x versions of zuul might resolve the issue.
Good luck with that.

Using Gateway to consume Spring Boot application from Spring Integration application

I am just starting with Spring Integration with Spring Boot 2.
I am working on a application which uses Spring Integration's HTTP outbound gateway to consume a Spring boot Service.
I am consuming the spring boot service from Spring Integration application using Gateway.
When I call the Gateway method which in turn will use the outbound gateway to call the spring boot service, the request does not seem to be completed. It is just going on when I make the HTTP GET request via the browser.
The request is also not received by the Spring Boot service.
I am not able to identify what is wrong in my Integration application when using gateway to consume a Spring Boot 2 service.
I have shared my Spring Boot 2 Application and also the Integration application which I am using to consume it in the below github folder. it contains 2 folders, one for the spring Integration application and the other for the spring boot application.
https://github.com/gsamartian/spring-int-demos
I have exposed a REST interface for the Integration application using RestController.
I access the boot application from integration application via the url, http://localhost:8763/callExternalServiceViaGateway
I am able to access the spring boot application directly from its port.
If anyone can help me identify the cause it would be great.
Thanks,
Your problem that the gateway method is without any args:
#Gateway(requestChannel = "get.request.channel", replyChannel = "reply.channel")
String getCustomMessage();
In this case the gateway works as receiving. No any requests is send because nothing to wrap to the payload. See more info on the matter in the Reference Manual.
Right now I see several bugs with the payloadExpression and no arg, so I suggest you to add some String payload arg to the getCustomMessage() gateway method and perform it with an empty string.
Will take a look into the bugs and will fix them soon.
Thank you for a good sample how to catch and reproduce!
https://jira.spring.io/browse/INT-4448
https://jira.spring.io/browse/INT-4449

Interaction between api gateway (Zuul) and UAA server (Spring OAuth2) with Spring Boot 2.0

I'm trying to build a system with an gateway server (Zuul), and UAA server (Spring OAuth2)
There's lots of examples but they are all used with Spring Boot 1 (1.5.X?). When I tried to migrate to Spring Boot 2, lots of things got moved or removed (in the auto-configure package).
My current understanding is that the gateway server will acts as an oauth2 client with sso. Hope someone can point me to the right direction.
Thanks.

Resources