Skip to content
Simple spring controller using coroutines, webflux and fuel
Kotlin Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
gradle/wrapper
src/main
.gitignore
README.md changes after review Nov 21, 2019
build.gradle.kts
gradlew
gradlew.bat initial commit Oct 14, 2019
settings.gradle.kts
vegetaTests.sh changes after review Nov 21, 2019

README.md

Spring Boot gingerbread service

This project contains example Controller serving a few endpoints.

Each endpoint returns a Gingerbread data and uses specific request handler:

  • /blockingRestTemplate - standard Spring Rest Template (blocking)
  • /suspendingPureCoroutines - uses Rest Template but wrapped into coroutine (still blocking)
  • /suspendingFuelCoroutines - uses suspendable client and coroutines: Fuel (non-blocking)
  • /webfluxPureReactive - uses Spring WebClient underneath
  • /webfluxReactiveCoroutines - the same Spring WebClient but wrapped into mono coroutine builder

Assumes that request handlers call some external micro-service (auxiliary kotlin-coroutines-server) exposed on http://localhost:8087/

To run a server (by default uses netty on port 8080):

$ ./gradlew bootRun

To set the number of netty server workers to 64 (by default netty uses number of CPU cores, but at least 2):

$ ./gradlew bootRun -Dreactor.netty.ioWorkerCount=64

To run performance test against local server on port 8080:

$ ./vegetaTests.sh
You can’t perform that action at this time.