Spring WebFlux 案例
Spring WebFlux 案例
这个工程是基于Spring Boot + Spring WebFlux实现的完整案例。
我们将有两个子项目:
stock-quotes
is a functional WebFlux app which streams stock quotestrading-service
is an annotation-based WebFlux app using a datastore, HTML views, and several browser-related technologies
相关的文档参考地址:
- Reactor Core documentation
- Spring WebFlux reference documentation and javadoc
Stock Quotes application
create a Quote Generator
为了能够模拟真实的股票价格,创建了QuoteGenerator
类来每过一段时间生成这些值,以及对应的实体类Quote
Functional web applications with “WebFlux.fn”
Spring WebFlux 有两种形式的应用:annotation based and functional。这个项目我们使用的是基于函数式的。
进来的HTTP 请求,通过HandlerFunction
处理,返回一个Mono。与之对应的声明式是一个controller
方法。
但是这些进来的请求怎么被发送到对应的 handler ?
我们使用RouterFunction
,这个函数的作用是传入一个ServerRequest
,返回一个Mono<HandlerFunction>
. 如果一个请求匹配某个特定的路由,对应的函数就会返回;否则返回一个空的Mono
. RouterFunction
有点类似于@Controller
声明类里的@RequestMapping
.
Create your first HandlerFunction + RouterFunction
首先,建一个QuoteHandler
类,标记为@Component
;这个类具有所有handler functions的方法。创建一个hello方法返回格式为text/plain
格式的HTTP 响应。
QuoteHandler.java
public Mono<ServerResponse> hello(ServerRequest request){return ok().contentType(TEXT_PLAIN).body(BodyInserters.fromObject("Hello Spring!"));}
为了能给这个类发送请求,需要把RouterFunction
暴露给Spring Boot
。创建一个QuoteRouter
配置类(添加@Configuration
),返回一个RouterFunction<ServerResponse>
类。
修改QuoteRouter
类,目的是发送给QuoteHandler#hello
的get请求,能发送给QuoteRouter
类。
Since
QuoteHandler
is a component, you can inject it in@Bean
methods as a method parameter.
Your application should now behave like this:
$ curl http://localhost:8081/hello -i
HTTP/1.1 200 OK
transfer-encoding: chunked
Content-Type: text/plain;charset=UTF-8Hello Spring!%
完成以后,增加另一个端点 :
在QuoteHandler
类里,
- with a HandlerFunction
echo
that echoes the request body in the response, as “text/plain” - and an additional route in our existing
RouterFunction
that accepts POST requests on"/echo"
with a “text/plain” body and returns responses with the same content type.
You can also use this new endpoint with:
$ curl http://localhost:8081/echo -i -d "WebFlux workshop" -H "Content-Type: text/plain"
HTTP/1.1 200 OK
transfer-encoding: chunked
Content-Type: text/plainWebFlux workshop%
Expose the Flux<Quotes>
as a web service
First, let’s inject our QuoteGenerator
instance in our QuoteHandler
, instantiate a Flux<Quote>
from it that emits a Quote
every 200 msec and can be shared between multiple subscribers (look at the Flux
operators for that). This instance should be kept as an attribute for reusability.
Now create a streamQuotes
handler that streams those generated quotes with the "application/stream+json"
content type. Add the corresponding part in the RouterFunction
, on the "/quotes"
endpoint.
$ curl http://localhost:8081/quotes -i -H "Accept: application/stream+json"
HTTP/1.1 200 OK
transfer-encoding: chunked
Content-Type: application/stream+json{"ticker":"CTXS","price":84.0,"instant":1494841666.633000000}
{"ticker":"DELL","price":67.1,"instant":1494841666.834000000}
{"ticker":"GOOG","price":869,"instant":1494841667.034000000}
{"ticker":"MSFT","price":66.5,"instant":1494841667.231000000}
{"ticker":"ORCL","price":46.13,"instant":1494841667.433000000}
{"ticker":"RHT","price":86.9,"instant":1494841667.634000000}
{"ticker":"VMW","price":93.7,"instant":1494841667.833000000}
Let’s now create a variant of that — instead of streaming all values (with an infinite stream), we can now take the last “n” elements of that Flux
and return those as a collection of Quotes with the content type "application/json"
. Note that you should take the requested number of Quotes from the request itself, with the query parameter named "size"
(or pick 10
as the default size if none was provided).
curl http://localhost:8081/quotes -i -H "Accept: application/json"
HTTP/1.1 200 OK
transfer-encoding: chunked
Content-Type: application/json[{"ticker":"CTXS","price":85.8,"instant":1494842241.716000000},{"ticker":"DELL","price":64.69,"instant":1494842241.913000000},{"ticker":"GOOG","price":856.5,"instant":1494842242.112000000},{"ticker":"MSFT","price":68.2,"instant":1494842242.317000000},{"ticker":"ORCL","price":47.4,"instant":1494842242.513000000},{"ticker":"RHT","price":85.6,"instant":1494842242.716000000},{"ticker":"VMW","price":96.1,"instant":1494842242.914000000},{"ticker":"CTXS","price":85.5,"instant":1494842243.116000000},{"ticker":"DELL","price":64.88,"instant":1494842243.316000000},{"ticker":"GOOG","price":889,"instant":1494842243.517000000}]%
以上案例,通过启动StockQuotesApplication
,在Windows10下,安装curl
工具即可进行测试
Integration tests with WebTestClient
Spring WebFlux (actually the spring-test
module) includes a WebTestClient
that can be used to test WebFlux server endpoints with or without a running server. Tests without a running server are comparable to MockMvc from Spring MVC where mock request and response are used instead of connecting over the network using a socket. The WebTestClient however can also perform tests against a running server.
WebTestClient vs WebClient
Simply put, WebClient is an interface representing the main entry point for performing web requests.
It has been created as a part of the Spring Web Reactive module and will be replacing the classic RestTemplate in these scenarios. The new client is a reactive, non-blocking solution that works over the HTTP/1.1 protocol.
Finally, the interface has a single implementation – the DefaultWebClient class – which we’ll be working with.
The WebTestClient is the main entry point for testing WebFlux server endpoints. It has very similar API to the WebClient, and it delegates most of the work to an internal WebClient instance focusing mainly on providing a test context. The DefaultWebTestClient class is a single interface implementation.
通过运行StockQuotesApplicationTests
,会有如下信息:
"C:\Program Files\Java\jdk1.8.0_101\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\lib\idea_rt.jar=2807:E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath "E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\lib\idea_rt.jar;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\plugins\junit\lib\junit-rt.jar;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\plugins\junit\lib\junit5-rt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar;D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\test-classes;D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\classes;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-webflux\2.0.2.RELEASE\spring-boot-starter-webflux-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter\2.0.2.RELEASE\spring-boot-starter-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot\2.0.2.RELEASE\spring-boot-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-context\5.0.6.RELEASE\spring-context-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-aop\5.0.6.RELEASE\spring-aop-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-expression\5.0.6.RELEASE\spring-expression-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-autoconfigure\2.0.2.RELEASE\spring-boot-autoconfigure-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-logging\2.0.2.RELEASE\spring-boot-starter-logging-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\apache\logging\log4j\log4j-to-slf4j\2.10.0\log4j-to-slf4j-2.10.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\apache\logging\log4j\log4j-api\2.10.0\log4j-api-2.10.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;E:\ApacheSoftwareFoundation\maven_Repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\yaml\snakeyaml\1.19\snakeyaml-1.19.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-json\2.0.2.RELEASE\spring-boot-starter-json-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\core\jackson-databind\2.9.5\jackson-databind-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\core\jackson-core\2.9.5\jackson-core-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.5\jackson-datatype-jdk8-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.5\jackson-datatype-jsr310-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.5\jackson-module-parameter-names-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-reactor-netty\2.0.2.RELEASE\spring-boot-starter-reactor-netty-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\projectreactor\ipc\reactor-netty\0.7.7.RELEASE\reactor-netty-0.7.7.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-codec-http\4.1.24.Final\netty-codec-http-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-codec\4.1.24.Final\netty-codec-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-handler\4.1.24.Final\netty-handler-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-buffer\4.1.24.Final\netty-buffer-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-transport\4.1.24.Final\netty-transport-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-resolver\4.1.24.Final\netty-resolver-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-handler-proxy\4.1.24.Final\netty-handler-proxy-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-codec-socks\4.1.24.Final\netty-codec-socks-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-transport-native-epoll\4.1.24.Final\netty-transport-native-epoll-4.1.24.Final-linux-x86_64.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-common\4.1.24.Final\netty-common-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-transport-native-unix-common\4.1.24.Final\netty-transport-native-unix-common-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\hibernate\validator\hibernate-validator\6.0.9.Final\hibernate-validator-6.0.9.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-web\5.0.6.RELEASE\spring-web-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-beans\5.0.6.RELEASE\spring-beans-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-webflux\5.0.6.RELEASE\spring-webflux-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\projectreactor\reactor-core\3.1.7.RELEASE\reactor-core-3.1.7.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\reactivestreams\reactive-streams\1.0.2\reactive-streams-1.0.2.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\synchronoss\cloud\nio-multipart-parser\1.1.0\nio-multipart-parser-1.1.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\synchronoss\cloud\nio-stream-storage\1.1.3\nio-stream-storage-1.1.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-test\2.0.2.RELEASE\spring-boot-starter-test-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-test\2.0.2.RELEASE\spring-boot-test-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-test-autoconfigure\2.0.2.RELEASE\spring-boot-test-autoconfigure-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\minidev\json-smart\2.3\json-smart-2.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\minidev\accessors-smart\1.2\accessors-smart-1.2.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;E:\ApacheSoftwareFoundation\maven_Repository\junit\junit\4.12\junit-4.12.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\assertj\assertj-core\3.9.1\assertj-core-3.9.1.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\mockito\mockito-core\2.15.0\mockito-core-2.15.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\bytebuddy\byte-buddy\1.7.11\byte-buddy-1.7.11.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\bytebuddy\byte-buddy-agent\1.7.11\byte-buddy-agent-1.7.11.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\objenesis\objenesis\2.6\objenesis-2.6.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\hamcrest\hamcrest-library\1.3\hamcrest-library-1.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-core\5.0.6.RELEASE\spring-core-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-jcl\5.0.6.RELEASE\spring-jcl-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-test\5.0.6.RELEASE\spring-test-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\xmlunit\xmlunit-core\2.5.1\xmlunit-core-2.5.1.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests
15:42:59.586 [main] DEBUG org.springframework.test.context.junit4.SpringJUnit4ClassRunner - SpringJUnit4ClassRunner constructor called with [class com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]
15:42:59.606 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]
15:42:59.626 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]
15:42:59.656 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating TestContextBootstrapper for test class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests] from class [org.springframework.boot.test.context.SpringBootTestContextBootstrapper]
15:42:59.696 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Neither @ContextConfiguration nor @ContextHierarchy found for test class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests], using SpringBootContextLoader
15:42:59.706 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]: class path resource [com/viagra/spring/workshop/stockquotes/StockQuotesApplicationTests-context.xml] does not exist
15:42:59.706 [main] DEBUG org.springframework.test.context.support.AbstractContextLoader - Did not detect default resource location for test class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]: class path resource [com/viagra/spring/workshop/stockquotes/StockQuotesApplicationTestsContext.groovy] does not exist
15:42:59.706 [main] INFO org.springframework.test.context.support.AbstractContextLoader - Could not detect default resource locations for test class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]: no resource found for suffixes {-context.xml, Context.groovy}.
15:42:59.706 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils - Could not detect default configuration classes for test class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]: StockQuotesApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
15:42:59.786 [main] DEBUG org.springframework.test.context.support.ActiveProfilesUtils - Could not find an 'annotation declaring class' for annotation type [org.springframework.test.context.ActiveProfiles] and class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]
15:42:59.807 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding PropertySource 'systemProperties' with lowest search precedence
15:42:59.807 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding PropertySource 'systemEnvironment' with lowest search precedence
15:42:59.807 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [MapPropertySource@2114874018 {name='systemProperties', properties={java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=C:\Program Files\Java\jdk1.8.0_101\jre\bin, java.vm.version=25.101-b13, java.vm.vendor=Oracle Corporation, java.vendor.url=http://java.oracle.com/, path.separator=;, java.vm.name=Java HotSpot(TM) 64-Bit Server VM, file.encoding.pkg=sun.io, user.country=CN, user.script=, sun.java.launcher=SUN_STANDARD, sun.os.patch.level=, java.vm.specification.name=Java Virtual Machine Specification, user.dir=D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes, java.runtime.version=1.8.0_101-b13, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, java.endorsed.dirs=C:\Program Files\Java\jdk1.8.0_101\jre\lib\endorsed, os.arch=amd64, java.io.tmpdir=C:\Users\HASEE\AppData\Local\Temp\, line.separator=
, java.vm.specification.vendor=Oracle Corporation, user.variant=, os.name=Windows 10, sun.jnu.encoding=GBK, java.library.path=C:\Program Files\Java\jdk1.8.0_101\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;E:\software\Xmanager\Xlpd 6\;E:\software\Xmanager\Xshell 6\;E:\software\Xmanager\Xmanager 6\;F:\oracle12c\product\12.1.0\dbhome_1\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\libnvvp;E:\software\Anaconda;E:\software\Anaconda\Library\mingw-w64\bin;E:\software\Anaconda\Library\usr\bin;E:\software\Anaconda\Library\bin;E:\software\Anaconda\Scripts;C:\Program Files\Java\jdk1.8.0_101\bin;C:\Program Files\Java\jdk1.8.0_101\jre\bin;C:\ProgramData\Oracle\Java\javapath;E:\software\database\oracle11g\product\11.2.0\dbhome_1\bin;E:\software\tomcat Server\apache-tomcat-8.0.28\bin;E:\software\database\mysql\MySQL Server 5.5\bin;C:\Windows\System32;E:\software\WinSCP\WinSCP\;E:\software\Git\bin;E:\software\Git\cmd;C:\Program Files (x86)\scala\bin;C:\Program Files (x86)\scala\jre\bin;C:\Program Files\MySQL\MySQL Utilities 1.6\;C:\Program Files (x86)\sbt\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;E:\software\hadoop-common-2.2.0-bin-master\bin;E:\software\hadoop-common-2.2.0-bin-master\sbin;%ERLANG_HOME%\bin;C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.10\sbin;E:\software\redis\;E:\software\MongoDB\bin;E:\software\Microsoft VS Code\bin;F:\Gradle_Build\gradle-4.9\bin;C:\WINDOWS\System32\OpenSSH\;E:\software\TortoiseSVN\bin;C:\Go\bin;C:\Program Files (x86)\scala\bin;E:\software\hadoop-common-2.2.0-bin-master\bin;E:\ApacheSoftwareFoundation\apache-ant-1.10.5\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\bin\win64;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\common\lib\x64;E:\software\cuda\bin;E:\software\cuda\include;E:\software\cuda\lib\x64;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;E:\software\mysql-8.0.11-winx64\bin;F:\java_system\MQ\Zookeeper\Source_code\zookeeper-branch-3.4\bin;E:\software\Python2.7;E:\software\Nodejs\;E:\software\Brackets\command;E:\software\UltraEdit;E:\software\TortoiseGit\bin;C:\Program Files\Git\cmd;E:\software\curl-7.66.0-win64-mingw\bin;E:\software\Ruby24-x64\bin;E:\software\Ruby22-x64\bin;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;E:\ApacheSoftwareFoundation\apache-maven-3.5.0\bin;E:\software\Nodejs\node_global;E:\software\Microsoft VS Code\bin;C:\Users\HASEE\AppData\Local\Microsoft\WindowsApps;F:\Program Files\Docker Toolbox;C:\Users\HASEE\AppData\Local\Microsoft\WindowsApps;E:\software\JetBrains\PyCharm 2018.3.2\bin;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\bin;;C:\Users\HASEE\AppData\Roaming\npm;E:\software\JetBrains\WebStorm2019.1.2\WebStorm 2019.1.2\bin;;., java.specification.name=Java Platform API Specification, java.class.version=52.0, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, os.version=10.0, user.home=C:\Users\HASEE, user.timezone=Asia/Shanghai, java.awt.printerjob=sun.awt.windows.WPrinterJob, file.encoding=UTF-8, java.specification.version=1.8, java.class.path=E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\lib\idea_rt.jar;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\plugins\junit\lib\junit-rt.jar;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\plugins\junit\lib\junit5-rt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar;D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\test-classes;D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\classes;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-webflux\2.0.2.RELEASE\spring-boot-starter-webflux-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter\2.0.2.RELEASE\spring-boot-starter-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot\2.0.2.RELEASE\spring-boot-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-context\5.0.6.RELEASE\spring-context-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-aop\5.0.6.RELEASE\spring-aop-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-expression\5.0.6.RELEASE\spring-expression-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-autoconfigure\2.0.2.RELEASE\spring-boot-autoconfigure-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-logging\2.0.2.RELEASE\spring-boot-starter-logging-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\apache\logging\log4j\log4j-to-slf4j\2.10.0\log4j-to-slf4j-2.10.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\apache\logging\log4j\log4j-api\2.10.0\log4j-api-2.10.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;E:\ApacheSoftwareFoundation\maven_Repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\yaml\snakeyaml\1.19\snakeyaml-1.19.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-json\2.0.2.RELEASE\spring-boot-starter-json-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\core\jackson-databind\2.9.5\jackson-databind-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\core\jackson-core\2.9.5\jackson-core-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.5\jackson-datatype-jdk8-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.5\jackson-datatype-jsr310-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.5\jackson-module-parameter-names-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-reactor-netty\2.0.2.RELEASE\spring-boot-starter-reactor-netty-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\projectreactor\ipc\reactor-netty\0.7.7.RELEASE\reactor-netty-0.7.7.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-codec-http\4.1.24.Final\netty-codec-http-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-codec\4.1.24.Final\netty-codec-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-handler\4.1.24.Final\netty-handler-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-buffer\4.1.24.Final\netty-buffer-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-transport\4.1.24.Final\netty-transport-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-resolver\4.1.24.Final\netty-resolver-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-handler-proxy\4.1.24.Final\netty-handler-proxy-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-codec-socks\4.1.24.Final\netty-codec-socks-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-transport-native-epoll\4.1.24.Final\netty-transport-native-epoll-4.1.24.Final-linux-x86_64.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-common\4.1.24.Final\netty-common-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-transport-native-unix-common\4.1.24.Final\netty-transport-native-unix-common-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\hibernate\validator\hibernate-validator\6.0.9.Final\hibernate-validator-6.0.9.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-web\5.0.6.RELEASE\spring-web-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-beans\5.0.6.RELEASE\spring-beans-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-webflux\5.0.6.RELEASE\spring-webflux-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\projectreactor\reactor-core\3.1.7.RELEASE\reactor-core-3.1.7.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\reactivestreams\reactive-streams\1.0.2\reactive-streams-1.0.2.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\synchronoss\cloud\nio-multipart-parser\1.1.0\nio-multipart-parser-1.1.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\synchronoss\cloud\nio-stream-storage\1.1.3\nio-stream-storage-1.1.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-test\2.0.2.RELEASE\spring-boot-starter-test-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-test\2.0.2.RELEASE\spring-boot-test-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-test-autoconfigure\2.0.2.RELEASE\spring-boot-test-autoconfigure-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\minidev\json-smart\2.3\json-smart-2.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\minidev\accessors-smart\1.2\accessors-smart-1.2.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;E:\ApacheSoftwareFoundation\maven_Repository\junit\junit\4.12\junit-4.12.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\assertj\assertj-core\3.9.1\assertj-core-3.9.1.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\mockito\mockito-core\2.15.0\mockito-core-2.15.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\bytebuddy\byte-buddy\1.7.11\byte-buddy-1.7.11.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\bytebuddy\byte-buddy-agent\1.7.11\byte-buddy-agent-1.7.11.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\objenesis\objenesis\2.6\objenesis-2.6.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\hamcrest\hamcrest-library\1.3\hamcrest-library-1.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-core\5.0.6.RELEASE\spring-core-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-jcl\5.0.6.RELEASE\spring-jcl-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-test\5.0.6.RELEASE\spring-test-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\xmlunit\xmlunit-core\2.5.1\xmlunit-core-2.5.1.jar;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\lib\idea_rt.jar, user.name=HASEE, java.vm.specification.version=1.8, sun.java.command=com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests, java.home=C:\Program Files\Java\jdk1.8.0_101\jre, sun.arch.data.model=64, user.language=zh, java.specification.vendor=Oracle Corporation, awt.toolkit=sun.awt.windows.WToolkit, java.vm.info=mixed mode, java.version=1.8.0_101, java.ext.dirs=C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext, sun.boot.class.path=C:\Program Files\Java\jdk1.8.0_101\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_101\jre\classes, java.vendor=Oracle Corporation, file.separator=\, java.vendor.url.bug=http://bugreport.sun.com/bugreport/, idea.test.cyclic.buffer.size=1048576, sun.io.unicode.encoding=UnicodeLittle, sun.cpu.endian=little, sun.desktop=windows, sun.cpu.isalist=amd64}}, SystemEnvironmentPropertySource@911312317 {name='systemEnvironment', properties={USERDOMAIN_ROAMINGPROFILE=DESKTOP-34LFR52, NO_PROXY=192.168.99.100, PROCESSOR_LEVEL=6, VS140COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\, M3=E:\ApacheSoftwareFoundation\apache-maven-3.5.0\bin, SESSIONNAME=Console, ALLUSERSPROFILE=C:\ProgramData, LNKEVN=C:\Program Files (x86)\Internet Explorer\iexplore.exe, PROCESSOR_ARCHITECTURE=AMD64, PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules, SystemDrive=C:, MOZ_PLUGIN_PATH=E:\software\Foxit Software\Foxit PhantomPDF\plugins\, USERNAME=HASEE, ProgramFiles(x86)=C:\Program Files (x86), FPS_BROWSER_USER_PROFILE_STRING=Default, PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW;.RB;.RBW, COMPOSE_CONVERT_WINDOWS_PATHS=true, DriverData=C:\Windows\System32\Drivers\DriverData, GOPATH=F:\go_system, ProgramData=C:\ProgramData, ProgramW6432=C:\Program Files, RABBITMQ_SERVER=C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.10, HOMEPATH=\Users\HASEE, PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 9, GenuineIntel, HADOOP_HOME=E:\software\hadoop-common-2.2.0-bin-master, ProgramFiles=C:\Program Files, PUBLIC=C:\Users\Public, windir=C:\WINDOWS, =::=::\, ZOOKEEPER_HOME=F:\java_system\MQ\Zookeeper\Source_code\zookeeper-branch-3.4, LOCALAPPDATA=C:\Users\HASEE\AppData\Local, IntelliJ IDEA=E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\bin;, DOCKER_HOST=tcp://192.168.99.100:2376, USERDOMAIN=DESKTOP-34LFR52, FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer, LOGONSERVER=\\DESKTOP-34LFR52, JAVA_HOME=C:\Program Files\Java\jdk1.8.0_101, CUDA_SDK_LIB_PATH= C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\common\lib\x64, CUBA_LIB_PATH= C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64, WebStorm=E:\software\JetBrains\WebStorm2019.1.2\WebStorm 2019.1.2\bin;, GRADLE_HOME=F:\Gradle_Build\gradle-4.9, ANT_HOME=E:\ApacheSoftwareFoundation\apache-ant-1.10.5, OneDrive=C:\Users\HASEE\OneDrive, APPDATA=C:\Users\HASEE\AppData\Roaming, DOCKER_MACHINE_NAME=default, GRADLE_USER_HOME=E:\ApacheSoftwareFoundation\maven_Repository, DOCKER_CERT_PATH=C:\Users\HASEE\.docker\machine\machines\default, CUDA_SDK_BIN_PATH= C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\bin\win64, M3_HOME=E:\ApacheSoftwareFoundation\apache-maven-3.5.0, NODE_PATH=E:\software\Nodejs\node_modules, SCALA_HOME=C:\Program Files (x86)\scala, CommonProgramFiles=C:\Program Files\Common Files, Path=E:\software\Xmanager\Xlpd 6\;E:\software\Xmanager\Xshell 6\;E:\software\Xmanager\Xmanager 6\;F:\oracle12c\product\12.1.0\dbhome_1\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\libnvvp;E:\software\Anaconda;E:\software\Anaconda\Library\mingw-w64\bin;E:\software\Anaconda\Library\usr\bin;E:\software\Anaconda\Library\bin;E:\software\Anaconda\Scripts;C:\Program Files\Java\jdk1.8.0_101\bin;C:\Program Files\Java\jdk1.8.0_101\jre\bin;C:\ProgramData\Oracle\Java\javapath;E:\software\database\oracle11g\product\11.2.0\dbhome_1\bin;E:\software\tomcat Server\apache-tomcat-8.0.28\bin;E:\software\database\mysql\MySQL Server 5.5\bin;C:\Windows\System32;E:\software\WinSCP\WinSCP\;E:\software\Git\bin;E:\software\Git\cmd;C:\Program Files (x86)\scala\bin;C:\Program Files (x86)\scala\jre\bin;C:\Program Files\MySQL\MySQL Utilities 1.6\;C:\Program Files (x86)\sbt\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;E:\software\hadoop-common-2.2.0-bin-master\bin;E:\software\hadoop-common-2.2.0-bin-master\sbin;%ERLANG_HOME%\bin;C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.10\sbin;E:\software\redis\;E:\software\MongoDB\bin;E:\software\Microsoft VS Code\bin;F:\Gradle_Build\gradle-4.9\bin;C:\WINDOWS\System32\OpenSSH\;E:\software\TortoiseSVN\bin;C:\Go\bin;C:\Program Files (x86)\scala\bin;E:\software\hadoop-common-2.2.0-bin-master\bin;E:\ApacheSoftwareFoundation\apache-ant-1.10.5\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\bin\win64;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\common\lib\x64;E:\software\cuda\bin;E:\software\cuda\include;E:\software\cuda\lib\x64;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;E:\software\mysql-8.0.11-winx64\bin;F:\java_system\MQ\Zookeeper\Source_code\zookeeper-branch-3.4\bin;E:\software\Python2.7;E:\software\Nodejs\;E:\software\Brackets\command;E:\software\UltraEdit;E:\software\TortoiseGit\bin;C:\Program Files\Git\cmd;E:\software\curl-7.66.0-win64-mingw\bin;E:\software\Ruby24-x64\bin;E:\software\Ruby22-x64\bin;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;E:\ApacheSoftwareFoundation\apache-maven-3.5.0\bin;E:\software\Nodejs\node_global;E:\software\Microsoft VS Code\bin;C:\Users\HASEE\AppData\Local\Microsoft\WindowsApps;F:\Program Files\Docker Toolbox;C:\Users\HASEE\AppData\Local\Microsoft\WindowsApps;E:\software\JetBrains\PyCharm 2018.3.2\bin;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\bin;;C:\Users\HASEE\AppData\Roaming\npm;E:\software\JetBrains\WebStorm2019.1.2\WebStorm 2019.1.2\bin;, PyCharm=E:\software\JetBrains\PyCharm 2018.3.2\bin;, OS=Windows_NT, COMPUTERNAME=DESKTOP-34LFR52, NVCUDASAMPLES_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0, CATALINA_HOME=E:\software\tomcat Server\apache-tomcat-7.0.78, SBT_HOME=C:\Program Files (x86)\sbt, CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0, PROCESSOR_REVISION=9e09, CLASSPATH=.;C:\Program Files\Java\jdk1.8.0_101\lib\dt.jar;C:\Program Files\Java\jdk1.8.0_101\lib\tools.jar;E:\software\tomcat Server\apache-tomcat-7.0.78\common\lib\servlet.jar;C:\Program Files (x86)\sbt\conf;, CommonProgramW6432=C:\Program Files\Common Files, GOROOT=C:\Go\, ComSpec=C:\WINDOWS\system32\cmd.exe, CUDA_SDK_PATH= C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0, NVCUDASAMPLES9_0_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0, RUBYOPT=-Eutf-8, CUDA_BIN_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin, DOCKER_TLS_VERIFY=1, SystemRoot=C:\WINDOWS, TEMP=C:\Users\HASEE\AppData\Local\Temp, HOMEDRIVE=C:, USERPROFILE=C:\Users\HASEE, TMP=C:\Users\HASEE\AppData\Local\Temp, CUDA_PATH_V9_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0, CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files, NUMBER_OF_PROCESSORS=8}}]
15:42:59.827 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Resolved classpath location [com/viagra/spring/workshop/stockquotes/] to resources [URL [file:/D:/java/spring-project/Spring-Framework/webflux-workshop/stock-quotes/target/test-classes/com/viagra/spring/workshop/stockquotes/], URL [file:/D:/java/spring-project/Spring-Framework/webflux-workshop/stock-quotes/target/classes/com/viagra/spring/workshop/stockquotes/]]
15:42:59.827 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Looking for matching resources in directory tree [D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\test-classes\com\viagra\spring\workshop\stockquotes]
15:42:59.827 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Searching directory [D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\test-classes\com\viagra\spring\workshop\stockquotes] for files matching pattern [D:/java/spring-project/Spring-Framework/webflux-workshop/stock-quotes/target/test-classes/com/viagra/spring/workshop/stockquotes/*.class]
15:42:59.836 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Looking for matching resources in directory tree [D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\classes\com\viagra\spring\workshop\stockquotes]
15:42:59.836 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Searching directory [D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\classes\com\viagra\spring\workshop\stockquotes] for files matching pattern [D:/java/spring-project/Spring-Framework/webflux-workshop/stock-quotes/target/classes/com/viagra/spring/workshop/stockquotes/*.class]
15:42:59.836 [main] DEBUG org.springframework.core.io.support.PathMatchingResourcePatternResolver - Resolved location pattern [classpath*:com/viagra/spring/workshop/stockquotes/*.class] to resources [file [D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\test-classes\com\viagra\spring\workshop\stockquotes\StockQuotesApplicationTests.class], file [D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\classes\com\viagra\spring\workshop\stockquotes\Quote.class], file [D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\classes\com\viagra\spring\workshop\stockquotes\QuoteGenerator.class], file [D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\classes\com\viagra\spring\workshop\stockquotes\QuoteHandler.class], file [D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\classes\com\viagra\spring\workshop\stockquotes\QuoteRouter.class], file [D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\classes\com\viagra\spring\workshop\stockquotes\StockQuotesApplication.class]]
15:42:59.956 [main] DEBUG org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider - Identified candidate component class: file [D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\classes\com\viagra\spring\workshop\stockquotes\StockQuotesApplication.class]
15:42:59.956 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Found @SpringBootConfiguration com.viagra.spring.workshop.stockquotes.StockQuotesApplication for test class com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests
15:43:00.246 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - @TestExecutionListeners is not present for class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]: using defaults.
15:43:00.246 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Loaded default TestExecutionListener class names from location [META-INF/spring.factories]: [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener, org.springframework.test.context.web.ServletTestExecutionListener, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener, org.springframework.test.context.support.DependencyInjectionTestExecutionListener, org.springframework.test.context.support.DirtiesContextTestExecutionListener, org.springframework.test.context.transaction.TransactionalTestExecutionListener, org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener]
15:43:00.266 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Skipping candidate TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener] due to a missing dependency. Specify custom listener classes or make the default listener classes and their required dependencies available. Offending class: [javax/servlet/ServletContext]
15:43:00.616 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Skipping candidate TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener] due to a missing dependency. Specify custom listener classes or make the default listener classes and their required dependencies available. Offending class: [org/springframework/transaction/interceptor/TransactionAttributeSource]
15:43:00.626 [main] DEBUG org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Skipping candidate TestExecutionListener [org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener] due to a missing dependency. Specify custom listener classes or make the default listener classes and their required dependencies available. Offending class: [org/springframework/transaction/interceptor/TransactionAttribute]
15:43:00.626 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper - Using TestExecutionListeners: [org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@78ffe6dc, org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@8317c52, org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener@76f2bbc1, org.springframework.test.context.support.DirtiesContextTestExecutionListener@68e965f5, org.springframework.boot.test.mock.mockito.ResetMocksTestExecutionListener@6f27a732, org.springframework.boot.test.autoconfigure.restdocs.RestDocsTestExecutionListener@6c779568, org.springframework.boot.test.autoconfigure.web.client.MockRestServiceServerResetTestExecutionListener@f381794, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcPrintOnlyOnFailureTestExecutionListener@2cdd0d4b, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverTestExecutionListener@7e9131d5]
15:43:00.636 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]
15:43:00.636 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]15:43:00.656 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]
15:43:00.656 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]15:43:00.656 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]
15:43:00.656 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]
15:43:00.656 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]
15:43:00.656 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]
15:43:00.666 [main] DEBUG org.springframework.test.context.support.AbstractDirtiesContextTestExecutionListener - Before test class: context [DefaultTestContext@65f095f8 testClass = StockQuotesApplicationTests, testInstance = [null], testMethod = [null], testException = [null], mergedContextConfiguration = [ReactiveWebMergedContextConfiguration@59af0466 testClass = StockQuotesApplicationTests, locations = '{}', classes = '{class com.viagra.spring.workshop.stockquotes.StockQuotesApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true, server.port=0}', contextCustomizers = set[org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@86be70a, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@7d70d1b1, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@38bc8ab5, org.springframework.boot.test.web.reactive.server.WebTestClientContextCustomizer@60285225, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@63440df3], contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> false]], class annotated with @DirtiesContext [false] with mode [null].
15:43:00.666 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved @ProfileValueSourceConfiguration [null] for test class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]
15:43:00.666 [main] DEBUG org.springframework.test.annotation.ProfileValueUtils - Retrieved ProfileValueSource type [class org.springframework.test.annotation.SystemProfileValueSource] for class [com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests]
15:43:00.676 [main] DEBUG org.springframework.test.context.support.DependencyInjectionTestExecutionListener - Performing dependency injection for test context [[DefaultTestContext@65f095f8 testClass = StockQuotesApplicationTests, testInstance = com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests@41e1e210, testMethod = [null], testException = [null], mergedContextConfiguration = [ReactiveWebMergedContextConfiguration@59af0466 testClass = StockQuotesApplicationTests, locations = '{}', classes = '{class com.viagra.spring.workshop.stockquotes.StockQuotesApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true, server.port=0}', contextCustomizers = set[org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@86be70a, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@7d70d1b1, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@38bc8ab5, org.springframework.boot.test.web.reactive.server.WebTestClientContextCustomizer@60285225, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@63440df3], contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> false]]].
15:43:00.716 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding PropertySource 'systemProperties' with lowest search precedence
15:43:00.716 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding PropertySource 'systemEnvironment' with lowest search precedence
15:43:00.716 [main] DEBUG org.springframework.core.env.StandardEnvironment - Initialized StandardEnvironment with PropertySources [MapPropertySource@1671507048 {name='systemProperties', properties={java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=C:\Program Files\Java\jdk1.8.0_101\jre\bin, java.vm.version=25.101-b13, java.vm.vendor=Oracle Corporation, java.vendor.url=http://java.oracle.com/, path.separator=;, java.vm.name=Java HotSpot(TM) 64-Bit Server VM, file.encoding.pkg=sun.io, user.country=CN, user.script=, sun.java.launcher=SUN_STANDARD, sun.os.patch.level=, java.vm.specification.name=Java Virtual Machine Specification, user.dir=D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes, java.runtime.version=1.8.0_101-b13, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, java.endorsed.dirs=C:\Program Files\Java\jdk1.8.0_101\jre\lib\endorsed, os.arch=amd64, java.io.tmpdir=C:\Users\HASEE\AppData\Local\Temp\, line.separator=
, java.vm.specification.vendor=Oracle Corporation, user.variant=, os.name=Windows 10, sun.jnu.encoding=GBK, java.library.path=C:\Program Files\Java\jdk1.8.0_101\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;E:\software\Xmanager\Xlpd 6\;E:\software\Xmanager\Xshell 6\;E:\software\Xmanager\Xmanager 6\;F:\oracle12c\product\12.1.0\dbhome_1\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\libnvvp;E:\software\Anaconda;E:\software\Anaconda\Library\mingw-w64\bin;E:\software\Anaconda\Library\usr\bin;E:\software\Anaconda\Library\bin;E:\software\Anaconda\Scripts;C:\Program Files\Java\jdk1.8.0_101\bin;C:\Program Files\Java\jdk1.8.0_101\jre\bin;C:\ProgramData\Oracle\Java\javapath;E:\software\database\oracle11g\product\11.2.0\dbhome_1\bin;E:\software\tomcat Server\apache-tomcat-8.0.28\bin;E:\software\database\mysql\MySQL Server 5.5\bin;C:\Windows\System32;E:\software\WinSCP\WinSCP\;E:\software\Git\bin;E:\software\Git\cmd;C:\Program Files (x86)\scala\bin;C:\Program Files (x86)\scala\jre\bin;C:\Program Files\MySQL\MySQL Utilities 1.6\;C:\Program Files (x86)\sbt\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;E:\software\hadoop-common-2.2.0-bin-master\bin;E:\software\hadoop-common-2.2.0-bin-master\sbin;%ERLANG_HOME%\bin;C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.10\sbin;E:\software\redis\;E:\software\MongoDB\bin;E:\software\Microsoft VS Code\bin;F:\Gradle_Build\gradle-4.9\bin;C:\WINDOWS\System32\OpenSSH\;E:\software\TortoiseSVN\bin;C:\Go\bin;C:\Program Files (x86)\scala\bin;E:\software\hadoop-common-2.2.0-bin-master\bin;E:\ApacheSoftwareFoundation\apache-ant-1.10.5\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\bin\win64;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\common\lib\x64;E:\software\cuda\bin;E:\software\cuda\include;E:\software\cuda\lib\x64;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;E:\software\mysql-8.0.11-winx64\bin;F:\java_system\MQ\Zookeeper\Source_code\zookeeper-branch-3.4\bin;E:\software\Python2.7;E:\software\Nodejs\;E:\software\Brackets\command;E:\software\UltraEdit;E:\software\TortoiseGit\bin;C:\Program Files\Git\cmd;E:\software\curl-7.66.0-win64-mingw\bin;E:\software\Ruby24-x64\bin;E:\software\Ruby22-x64\bin;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;E:\ApacheSoftwareFoundation\apache-maven-3.5.0\bin;E:\software\Nodejs\node_global;E:\software\Microsoft VS Code\bin;C:\Users\HASEE\AppData\Local\Microsoft\WindowsApps;F:\Program Files\Docker Toolbox;C:\Users\HASEE\AppData\Local\Microsoft\WindowsApps;E:\software\JetBrains\PyCharm 2018.3.2\bin;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\bin;;C:\Users\HASEE\AppData\Roaming\npm;E:\software\JetBrains\WebStorm2019.1.2\WebStorm 2019.1.2\bin;;., java.specification.name=Java Platform API Specification, java.class.version=52.0, sun.management.compiler=HotSpot 64-Bit Tiered Compilers, os.version=10.0, user.home=C:\Users\HASEE, user.timezone=Asia/Shanghai, java.awt.printerjob=sun.awt.windows.WPrinterJob, file.encoding=UTF-8, java.specification.version=1.8, java.class.path=E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\lib\idea_rt.jar;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\plugins\junit\lib\junit-rt.jar;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\plugins\junit\lib\junit5-rt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar;D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\test-classes;D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes\target\classes;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-webflux\2.0.2.RELEASE\spring-boot-starter-webflux-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter\2.0.2.RELEASE\spring-boot-starter-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot\2.0.2.RELEASE\spring-boot-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-context\5.0.6.RELEASE\spring-context-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-aop\5.0.6.RELEASE\spring-aop-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-expression\5.0.6.RELEASE\spring-expression-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-autoconfigure\2.0.2.RELEASE\spring-boot-autoconfigure-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-logging\2.0.2.RELEASE\spring-boot-starter-logging-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\apache\logging\log4j\log4j-to-slf4j\2.10.0\log4j-to-slf4j-2.10.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\apache\logging\log4j\log4j-api\2.10.0\log4j-api-2.10.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;E:\ApacheSoftwareFoundation\maven_Repository\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\yaml\snakeyaml\1.19\snakeyaml-1.19.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-json\2.0.2.RELEASE\spring-boot-starter-json-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\core\jackson-databind\2.9.5\jackson-databind-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\core\jackson-core\2.9.5\jackson-core-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.5\jackson-datatype-jdk8-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.5\jackson-datatype-jsr310-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.5\jackson-module-parameter-names-2.9.5.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-reactor-netty\2.0.2.RELEASE\spring-boot-starter-reactor-netty-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\projectreactor\ipc\reactor-netty\0.7.7.RELEASE\reactor-netty-0.7.7.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-codec-http\4.1.24.Final\netty-codec-http-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-codec\4.1.24.Final\netty-codec-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-handler\4.1.24.Final\netty-handler-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-buffer\4.1.24.Final\netty-buffer-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-transport\4.1.24.Final\netty-transport-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-resolver\4.1.24.Final\netty-resolver-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-handler-proxy\4.1.24.Final\netty-handler-proxy-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-codec-socks\4.1.24.Final\netty-codec-socks-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-transport-native-epoll\4.1.24.Final\netty-transport-native-epoll-4.1.24.Final-linux-x86_64.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-common\4.1.24.Final\netty-common-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\netty\netty-transport-native-unix-common\4.1.24.Final\netty-transport-native-unix-common-4.1.24.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\hibernate\validator\hibernate-validator\6.0.9.Final\hibernate-validator-6.0.9.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-web\5.0.6.RELEASE\spring-web-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-beans\5.0.6.RELEASE\spring-beans-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-webflux\5.0.6.RELEASE\spring-webflux-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\io\projectreactor\reactor-core\3.1.7.RELEASE\reactor-core-3.1.7.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\reactivestreams\reactive-streams\1.0.2\reactive-streams-1.0.2.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\synchronoss\cloud\nio-multipart-parser\1.1.0\nio-multipart-parser-1.1.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\synchronoss\cloud\nio-stream-storage\1.1.3\nio-stream-storage-1.1.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-starter-test\2.0.2.RELEASE\spring-boot-starter-test-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-test\2.0.2.RELEASE\spring-boot-test-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\boot\spring-boot-test-autoconfigure\2.0.2.RELEASE\spring-boot-test-autoconfigure-2.0.2.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\minidev\json-smart\2.3\json-smart-2.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\minidev\accessors-smart\1.2\accessors-smart-1.2.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;E:\ApacheSoftwareFoundation\maven_Repository\junit\junit\4.12\junit-4.12.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\assertj\assertj-core\3.9.1\assertj-core-3.9.1.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\mockito\mockito-core\2.15.0\mockito-core-2.15.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\bytebuddy\byte-buddy\1.7.11\byte-buddy-1.7.11.jar;E:\ApacheSoftwareFoundation\maven_Repository\net\bytebuddy\byte-buddy-agent\1.7.11\byte-buddy-agent-1.7.11.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\objenesis\objenesis\2.6\objenesis-2.6.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\hamcrest\hamcrest-library\1.3\hamcrest-library-1.3.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;E:\ApacheSoftwareFoundation\maven_Repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-core\5.0.6.RELEASE\spring-core-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-jcl\5.0.6.RELEASE\spring-jcl-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\springframework\spring-test\5.0.6.RELEASE\spring-test-5.0.6.RELEASE.jar;E:\ApacheSoftwareFoundation\maven_Repository\org\xmlunit\xmlunit-core\2.5.1\xmlunit-core-2.5.1.jar;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\lib\idea_rt.jar, user.name=HASEE, java.vm.specification.version=1.8, sun.java.command=com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 com.viagra.spring.workshop.stockquotes.StockQuotesApplicationTests, java.home=C:\Program Files\Java\jdk1.8.0_101\jre, sun.arch.data.model=64, user.language=zh, java.specification.vendor=Oracle Corporation, awt.toolkit=sun.awt.windows.WToolkit, java.vm.info=mixed mode, java.version=1.8.0_101, java.ext.dirs=C:\Program Files\Java\jdk1.8.0_101\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext, sun.boot.class.path=C:\Program Files\Java\jdk1.8.0_101\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_101\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_101\jre\classes, java.vendor=Oracle Corporation, file.separator=\, java.vendor.url.bug=http://bugreport.sun.com/bugreport/, idea.test.cyclic.buffer.size=1048576, sun.io.unicode.encoding=UnicodeLittle, sun.cpu.endian=little, sun.desktop=windows, sun.cpu.isalist=amd64}}, SystemEnvironmentPropertySource@687059528 {name='systemEnvironment', properties={USERDOMAIN_ROAMINGPROFILE=DESKTOP-34LFR52, NO_PROXY=192.168.99.100, PROCESSOR_LEVEL=6, VS140COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\, M3=E:\ApacheSoftwareFoundation\apache-maven-3.5.0\bin, SESSIONNAME=Console, ALLUSERSPROFILE=C:\ProgramData, LNKEVN=C:\Program Files (x86)\Internet Explorer\iexplore.exe, PROCESSOR_ARCHITECTURE=AMD64, PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules, SystemDrive=C:, MOZ_PLUGIN_PATH=E:\software\Foxit Software\Foxit PhantomPDF\plugins\, USERNAME=HASEE, ProgramFiles(x86)=C:\Program Files (x86), FPS_BROWSER_USER_PROFILE_STRING=Default, PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW;.RB;.RBW, COMPOSE_CONVERT_WINDOWS_PATHS=true, DriverData=C:\Windows\System32\Drivers\DriverData, GOPATH=F:\go_system, ProgramData=C:\ProgramData, ProgramW6432=C:\Program Files, RABBITMQ_SERVER=C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.10, HOMEPATH=\Users\HASEE, PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 158 Stepping 9, GenuineIntel, HADOOP_HOME=E:\software\hadoop-common-2.2.0-bin-master, ProgramFiles=C:\Program Files, PUBLIC=C:\Users\Public, windir=C:\WINDOWS, =::=::\, ZOOKEEPER_HOME=F:\java_system\MQ\Zookeeper\Source_code\zookeeper-branch-3.4, LOCALAPPDATA=C:\Users\HASEE\AppData\Local, IntelliJ IDEA=E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\bin;, DOCKER_HOST=tcp://192.168.99.100:2376, USERDOMAIN=DESKTOP-34LFR52, FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer, LOGONSERVER=\\DESKTOP-34LFR52, JAVA_HOME=C:\Program Files\Java\jdk1.8.0_101, CUDA_SDK_LIB_PATH= C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\common\lib\x64, CUBA_LIB_PATH= C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64, WebStorm=E:\software\JetBrains\WebStorm2019.1.2\WebStorm 2019.1.2\bin;, GRADLE_HOME=F:\Gradle_Build\gradle-4.9, ANT_HOME=E:\ApacheSoftwareFoundation\apache-ant-1.10.5, OneDrive=C:\Users\HASEE\OneDrive, APPDATA=C:\Users\HASEE\AppData\Roaming, DOCKER_MACHINE_NAME=default, GRADLE_USER_HOME=E:\ApacheSoftwareFoundation\maven_Repository, DOCKER_CERT_PATH=C:\Users\HASEE\.docker\machine\machines\default, CUDA_SDK_BIN_PATH= C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\bin\win64, M3_HOME=E:\ApacheSoftwareFoundation\apache-maven-3.5.0, NODE_PATH=E:\software\Nodejs\node_modules, SCALA_HOME=C:\Program Files (x86)\scala, CommonProgramFiles=C:\Program Files\Common Files, Path=E:\software\Xmanager\Xlpd 6\;E:\software\Xmanager\Xshell 6\;E:\software\Xmanager\Xmanager 6\;F:\oracle12c\product\12.1.0\dbhome_1\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\libnvvp;E:\software\Anaconda;E:\software\Anaconda\Library\mingw-w64\bin;E:\software\Anaconda\Library\usr\bin;E:\software\Anaconda\Library\bin;E:\software\Anaconda\Scripts;C:\Program Files\Java\jdk1.8.0_101\bin;C:\Program Files\Java\jdk1.8.0_101\jre\bin;C:\ProgramData\Oracle\Java\javapath;E:\software\database\oracle11g\product\11.2.0\dbhome_1\bin;E:\software\tomcat Server\apache-tomcat-8.0.28\bin;E:\software\database\mysql\MySQL Server 5.5\bin;C:\Windows\System32;E:\software\WinSCP\WinSCP\;E:\software\Git\bin;E:\software\Git\cmd;C:\Program Files (x86)\scala\bin;C:\Program Files (x86)\scala\jre\bin;C:\Program Files\MySQL\MySQL Utilities 1.6\;C:\Program Files (x86)\sbt\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;E:\software\hadoop-common-2.2.0-bin-master\bin;E:\software\hadoop-common-2.2.0-bin-master\sbin;%ERLANG_HOME%\bin;C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.10\sbin;E:\software\redis\;E:\software\MongoDB\bin;E:\software\Microsoft VS Code\bin;F:\Gradle_Build\gradle-4.9\bin;C:\WINDOWS\System32\OpenSSH\;E:\software\TortoiseSVN\bin;C:\Go\bin;C:\Program Files (x86)\scala\bin;E:\software\hadoop-common-2.2.0-bin-master\bin;E:\ApacheSoftwareFoundation\apache-ant-1.10.5\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\bin\win64;C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0\common\lib\x64;E:\software\cuda\bin;E:\software\cuda\include;E:\software\cuda\lib\x64;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;E:\software\mysql-8.0.11-winx64\bin;F:\java_system\MQ\Zookeeper\Source_code\zookeeper-branch-3.4\bin;E:\software\Python2.7;E:\software\Nodejs\;E:\software\Brackets\command;E:\software\UltraEdit;E:\software\TortoiseGit\bin;C:\Program Files\Git\cmd;E:\software\curl-7.66.0-win64-mingw\bin;E:\software\Ruby24-x64\bin;E:\software\Ruby22-x64\bin;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;E:\ApacheSoftwareFoundation\apache-maven-3.5.0\bin;E:\software\Nodejs\node_global;E:\software\Microsoft VS Code\bin;C:\Users\HASEE\AppData\Local\Microsoft\WindowsApps;F:\Program Files\Docker Toolbox;C:\Users\HASEE\AppData\Local\Microsoft\WindowsApps;E:\software\JetBrains\PyCharm 2018.3.2\bin;E:\software\JetBrains\IntelliJ IDEA 2019.1.2\IntelliJ IDEA 2018.3\bin;;C:\Users\HASEE\AppData\Roaming\npm;E:\software\JetBrains\WebStorm2019.1.2\WebStorm 2019.1.2\bin;, PyCharm=E:\software\JetBrains\PyCharm 2018.3.2\bin;, OS=Windows_NT, COMPUTERNAME=DESKTOP-34LFR52, NVCUDASAMPLES_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0, CATALINA_HOME=E:\software\tomcat Server\apache-tomcat-7.0.78, SBT_HOME=C:\Program Files (x86)\sbt, CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0, PROCESSOR_REVISION=9e09, CLASSPATH=.;C:\Program Files\Java\jdk1.8.0_101\lib\dt.jar;C:\Program Files\Java\jdk1.8.0_101\lib\tools.jar;E:\software\tomcat Server\apache-tomcat-7.0.78\common\lib\servlet.jar;C:\Program Files (x86)\sbt\conf;, CommonProgramW6432=C:\Program Files\Common Files, GOROOT=C:\Go\, ComSpec=C:\WINDOWS\system32\cmd.exe, CUDA_SDK_PATH= C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0, NVCUDASAMPLES9_0_ROOT=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.0, RUBYOPT=-Eutf-8, CUDA_BIN_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin, DOCKER_TLS_VERIFY=1, SystemRoot=C:\WINDOWS, TEMP=C:\Users\HASEE\AppData\Local\Temp, HOMEDRIVE=C:, USERPROFILE=C:\Users\HASEE, TMP=C:\Users\HASEE\AppData\Local\Temp, CUDA_PATH_V9_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0, CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files, NUMBER_OF_PROCESSORS=8}}]
15:43:00.716 [main] DEBUG org.springframework.test.context.support.TestPropertySourceUtils - Adding inlined properties to environment: {spring.jmx.enabled=false, org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true, server.port=0}
15:43:00.716 [main] DEBUG org.springframework.core.env.StandardEnvironment - Adding PropertySource 'Inlined Test Properties' with highest search precedence. ____ _ __ _ _/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) )' |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot :: (v2.0.2.RELEASE)2019-10-23 15:43:01.261 INFO 10152 --- [ main] c.v.s.w.s.StockQuotesApplicationTests : Starting StockQuotesApplicationTests on DESKTOP-34LFR52 with PID 10152 (started by HASEE in D:\java\spring-project\Spring-Framework\webflux-workshop\stock-quotes)
2019-10-23 15:43:01.263 INFO 10152 --- [ main] c.v.s.w.s.StockQuotesApplicationTests : No active profile set, falling back to default profiles: default
2019-10-23 15:43:01.311 INFO 10152 --- [ main] onfigReactiveWebServerApplicationContext : Refreshing org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext@45385f75: startup date [Wed Oct 23 15:43:01 CST 2019]; root of context hierarchy
2019-10-23 15:43:02.772 INFO 10152 --- [ main] o.s.w.r.f.s.s.RouterFunctionMapping : Mapped ((GET && /hello) && Accept: [text/plain]) -> com.viagra.spring.workshop.stockquotes.QuoteRouter$$Lambda$269/470132045@704b2127
((POST && /echo) && (Accept: [text/plain] && Content-Type: [text/plain])) -> com.viagra.spring.workshop.stockquotes.QuoteRouter$$Lambda$271/1237144823@3ee39da0
((GET && /quotes) && Accept: [application/json]) -> com.viagra.spring.workshop.stockquotes.QuoteRouter$$Lambda$272/1511180072@5d332969
((GET && /quotes) && Accept: [application/stream+json]) -> com.viagra.spring.workshop.stockquotes.QuoteRouter$$Lambda$273/2041264753@7cc9ce8
2019-10-23 15:43:02.802 INFO 10152 --- [ main] o.s.w.r.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.reactive.resource.ResourceWebHandler]
2019-10-23 15:43:02.802 INFO 10152 --- [ main] o.s.w.r.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.reactive.resource.ResourceWebHandler]
2019-10-23 15:43:02.932 INFO 10152 --- [ main] o.s.w.r.r.m.a.ControllerMethodResolver : Looking for @ControllerAdvice: org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext@45385f75: startup date [Wed Oct 23 15:43:01 CST 2019]; root of context hierarchy
2019-10-23 15:43:06.469 INFO 10152 --- [ctor-http-nio-1] r.ipc.netty.tcp.BlockingNettyContext : Started HttpServer on /0:0:0:0:0:0:0:0:2830
2019-10-23 15:43:06.469 INFO 10152 --- [ main] o.s.b.web.embedded.netty.NettyWebServer : Netty started on port(s): 2830
2019-10-23 15:43:06.479 INFO 10152 --- [ main] c.v.s.w.s.StockQuotesApplicationTests : Started StockQuotesApplicationTests in 5.763 seconds (JVM running for 8.222)
2019-10-23 15:43:08.529 INFO 10152 --- [ctor-http-nio-6] com.viagra.spring.workshop.stockquotes : | onSubscribe([Fuseable] FluxFlattenIterable.FlattenIterableSubscriber)
2019-10-23 15:43:08.539 INFO 10152 --- [ctor-http-nio-6] com.viagra.spring.workshop.stockquotes : | request(256)
2019-10-23 15:43:09.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='CTXS', price=85.1, instant=2019-10-23T07:43:09.549Z})
2019-10-23 15:43:09.589 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:09.589 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='DELL', price=64.28, instant=2019-10-23T07:43:09.549Z})
2019-10-23 15:43:09.589 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='GOOG', price=867, instant=2019-10-23T07:43:09.549Z})
2019-10-23 15:43:09.589 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='MSFT', price=66.3, instant=2019-10-23T07:43:09.549Z})
2019-10-23 15:43:09.589 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='ORCL', price=47.8, instant=2019-10-23T07:43:09.549Z})
2019-10-23 15:43:09.589 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='RHT', price=87.0, instant=2019-10-23T07:43:09.549Z})
2019-10-23 15:43:09.589 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='VMW', price=92.049, instant=2019-10-23T07:43:09.549Z})
2019-10-23 15:43:09.599 INFO 10152 --- [ctor-http-nio-6] com.viagra.spring.workshop.stockquotes : | request(6)
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='CTXS', price=84.0, instant=2019-10-23T07:43:10.549Z})
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='DELL', price=65.1, instant=2019-10-23T07:43:10.549Z})
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='GOOG', price=885, instant=2019-10-23T07:43:10.549Z})
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='MSFT', price=65.32, instant=2019-10-23T07:43:10.549Z})
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='ORCL', price=47.3, instant=2019-10-23T07:43:10.549Z})
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='RHT', price=84.067, instant=2019-10-23T07:43:10.549Z})
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='VMW', price=92.0072, instant=2019-10-23T07:43:10.549Z})
2019-10-23 15:43:10.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='CTXS', price=83.9, instant=2019-10-23T07:43:11.549Z})
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='DELL', price=65.5, instant=2019-10-23T07:43:11.549Z})
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='GOOG', price=879, instant=2019-10-23T07:43:11.549Z})
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='MSFT', price=67.4, instant=2019-10-23T07:43:11.549Z})
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='ORCL', price=46.91, instant=2019-10-23T07:43:11.549Z})
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='RHT', price=88.0, instant=2019-10-23T07:43:11.549Z})
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='VMW', price=92.17, instant=2019-10-23T07:43:11.549Z})
2019-10-23 15:43:11.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='CTXS', price=82.87, instant=2019-10-23T07:43:12.549Z})
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='DELL', price=66.3, instant=2019-10-23T07:43:12.549Z})
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='GOOG', price=891, instant=2019-10-23T07:43:12.549Z})
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='MSFT', price=67.9, instant=2019-10-23T07:43:12.549Z})
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='ORCL', price=48.0, instant=2019-10-23T07:43:12.549Z})
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='RHT', price=85.4, instant=2019-10-23T07:43:12.549Z})
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='VMW', price=96.1, instant=2019-10-23T07:43:12.549Z})
2019-10-23 15:43:12.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='CTXS', price=85.9, instant=2019-10-23T07:43:13.549Z})
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='DELL', price=64.98, instant=2019-10-23T07:43:13.549Z})
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='GOOG', price=852.7, instant=2019-10-23T07:43:13.549Z})
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='MSFT', price=68.0, instant=2019-10-23T07:43:13.549Z})
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='ORCL', price=47.7, instant=2019-10-23T07:43:13.549Z})
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='RHT', price=87.0, instant=2019-10-23T07:43:13.549Z})
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='VMW', price=94.0, instant=2019-10-23T07:43:13.549Z})
2019-10-23 15:43:13.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='CTXS', price=82.66, instant=2019-10-23T07:43:14.549Z})
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='DELL', price=65.4, instant=2019-10-23T07:43:14.549Z})
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='GOOG', price=856.4, instant=2019-10-23T07:43:14.549Z})
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='MSFT', price=65.72, instant=2019-10-23T07:43:14.549Z})
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='ORCL', price=46.66, instant=2019-10-23T07:43:14.549Z})
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='RHT', price=85.3, instant=2019-10-23T07:43:14.549Z})
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='VMW', price=92.94, instant=2019-10-23T07:43:14.549Z})
2019-10-23 15:43:14.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:14.559 ERROR 10152 --- [ctor-http-nio-6] o.s.w.s.adapter.HttpWebHandlerAdapter : Unhandled failure: 你的主机中的软件中止了一个已建立的连接。, response already set (status=200)
2019-10-23 15:43:14.559 WARN 10152 --- [ctor-http-nio-6] o.s.h.s.r.ReactorHttpHandlerAdapter : Handling completed with error: 你的主机中的软件中止了一个已建立的连接。
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='CTXS', price=82.60, instant=2019-10-23T07:43:15.549Z})
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='DELL', price=66.6, instant=2019-10-23T07:43:15.549Z})
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='GOOG', price=852.6, instant=2019-10-23T07:43:15.549Z})
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='MSFT', price=67.7, instant=2019-10-23T07:43:15.549Z})
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='ORCL', price=46.89, instant=2019-10-23T07:43:15.549Z})
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='RHT', price=87.3, instant=2019-10-23T07:43:15.549Z})
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='VMW', price=95.6, instant=2019-10-23T07:43:15.549Z})
2019-10-23 15:43:15.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='CTXS', price=84.2, instant=2019-10-23T07:43:16.549Z})
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='DELL', price=65.3, instant=2019-10-23T07:43:16.549Z})
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='GOOG', price=877, instant=2019-10-23T07:43:16.549Z})
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='MSFT', price=67.7, instant=2019-10-23T07:43:16.549Z})
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='ORCL', price=47.9, instant=2019-10-23T07:43:16.549Z})
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | request(1)
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | onNext(Quote{ticker='RHT', price=84.42, instant=2019-10-23T07:43:16.549Z})
2019-10-23 15:43:16.549 INFO 10152 --- [ parallel-2] com.viagra.spring.workshop.stockquotes : | cancel()
2019-10-23 15:43:16.579 INFO 10152 --- [ Thread-11] onfigReactiveWebServerApplicationContext : Closing org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext@45385f75: startup date [Wed Oct 23 15:43:01 CST 2019]; root of context hierarchy
2019-10-23 15:43:16.589 INFO 10152 --- [ Thread-11] r.ipc.netty.tcp.BlockingNettyContext : Stopped HttpServer on /0:0:0:0:0:0:0:0:2830
Trading Service application
Use Tomcat as a web engine
By default, spring-boot-starter-webflux
transitively brings spring-boot-starter-reactor-netty
and Spring Boot auto-configures Reactor Netty as a web server. For this application, we’ll use Tomcat as an alternative.
Note that Spring Boot supports as well Undertow and Jetty.
Use a reactive datastore
We’d like to insert users in our datastore when the application starts up. For that, create a UsersCommandLineRunner
component that implements Spring Boot’s CommandLineRunner
. In the run
method, use the reactive repository to insert TradingUser
instances in the datastore.
Since the
run
method returns void, it expects a blocking implementation. This is why you should use theblockLast(Duration)
operator on theFlux
returned by the repository when inserting data. You can alsothen().block(Duration)
to turn thatFlux
into aMono<Void>
that waits for completion.
Create and Configure a WebSocketHandler
WebFlux includes functional reactive WebSocket client and server support.
On the server side there are two main components: WebSocketHandlerAdapter
will handle the incoming requests by delegating to the configured WebSocketService
and WebSocketHandler
will be responsible to handle WebSocket session.
Take a look at the code samples in Reactive WebSocket Support documentation
First, create an EchoWebSocketHandler
class; it has to implement WebSocketHandler
. Now implement handle(WebSocketSession session)
method. The handler echoes the incoming messages with a delay of 1s.
To route requests to that handler, you need to map the above WebSocket handler to a specific URL: here, "/websocket/echo"
. Create a WebSocketRouter
configuration class (i.e. annotated with @Configuration
) that creates a bean of type HandlerMapping
. Create one additional bean of type WebSocketHandlerAdapter
which will delegate the processing of the incoming request to the default WebSocketService
which is HandshakeWebSocketService
.
Now create a WebSocketController
annotated with @Controller and add a method that renders the websocket.html
template for incoming "GET /websocket"
requests.
Add the following template file to your application:
trading-service/src/main/resources/templates/websocket.html
link:../trading-service/src/main/resources/templates/websocket.html[]
不过这个无法运行TradingServiceApplication
,只能运行test
目录下的测试用例。
sourcecode download
Spring WebFlux 案例相关推荐
- Spring WebFlux和Spring Cloud开发响应式微服务
作者:Piotr Mińkowski 译者:大萝卜爱上小白菜 原文:https://dzone.com/articles/reactive-microservices-with-spring-webf ...
- Spring Boot 3.x 系列【23】集成Spring WebFlux开发响应式应用程序
有道无术,术尚可求,有术无道,止于术. 本系列Spring Boot版本3.0.4 源码地址:https://gitee.com/pearl-organization/study-spring-boo ...
- Spring Webflux 响应式编程 (二) - WebFlux编程实战
第一章 Reactive Stream 第1节 jdk9的响应式流 就是reactive stream,也就是flow.其实和jdk8的stream没有一点关系.说白了就一个发布-订阅模式,一共只有4 ...
- 处理Spring WebFlux中出现的错误
处理Spring WebFlux中出现的错误 案例概述 在本教程中,我们将看一下处理Spring WebFlux项目中错误的各种策略,同时介绍一个实际案例. 我们还将指出在一个策略中使用另一个策略并在 ...
- Spring WebFlux 实践
文章目录 WebFlux 学习之路 1 .WebFlux 简介 2.WebFlux 的数据库操作 WebFlux 实践内容 1 .入门案例 1.1 RouterConfiguration 1.2 Ro ...
- 响应式Spring的道法术器(Spring WebFlux 快速上手 + 全面介绍)
1. Spring WebFlux 2小时快速入门 Spring 5 之使用Spring WebFlux开发响应式应用. lambda与函数式(15min) Reactor 3 响应式编程库(60mi ...
- 爸爸又给Spring MVC生了个弟弟叫Spring WebFlux
作者:李新杰 来自:编程新说 情景引入 很早之前,Java就火起来了,是因为它善于开发和处理网络方面的应用. Java有一个爱好,就是喜欢制定规范标准,但自己又不善于去实现. 反倒是一些服务提供商使用 ...
- spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...
- Spring Webflux: Kotlin DSL [片断]
原文链接:https://dzone.com/articles/spring-webflux-kotlin-dsl-snippets 作者:Biju Kunjummen 译者:Jackie Tang ...
最新文章
- zabbix监控服务器日志文件,Zabbix对服务器资源进行监控及百度告警的整合
- 数学狂想曲(五)——概率分布(2), 自相关互相关卷积
- 31 socket客户端. 服务器 异常 语法
- Dapp简单的投票小例子
- 简短总结一下C#里跨线程更新UI(转)
- 如何用MyEclipse在Resin中调试Web应用程序
- zerorpc java_Zerorpc 支持暴露多个远程Api接口类
- 流式计算之Storm简介
- java swing 圆形图标_java swing 圆形按钮
- 《水浒传》108将的绰号(ZZ)
- 通俗科普:弦论要求空间必须是25维的解释
- 2022年打工人转行实录!你后悔转行了吗?
- 垃圾网线,毁我青春(ubuntu安装失败)
- 幻灯片放映时无法切换到下一张
- 如何用Excel做一个战斗模拟器(一)升级经验表
- BUUCTF——rsa系列(4)
- 机器人制证系统大屏可视化
- 2020文献积累:计算机 [1] Reinforcement learning in Economics and Finance
- 软件的官方源、二进制地址
- React生命周期介绍