1. Vert.x ! Vert.x is a poluglot, non-blocking, event-driven
Application platform that Runs on The JVM.
2. Vert.x? Vert.x is a polyglot, non-blocking, event-driven
Application platform that Runs on The JVM.
3. Polyglot Super Simple Concurrency model Event Bus Module
System & Public Module Repository
4. Vert.x Verticle Module Event Bus . Vert.x
5. Verticle vert.x (concurrency) Event-based Programming Model
Event Loops Message Passing Shared data vert.x Core
6. Node.js 200 OK 72
7. 1. Event-based . 2. . 3. Event Bus. 4. Module System. 5.
Polyglot.
8. !! timfox RabbitMQ normanmaurer Netty Please dont use
StackOverflow to ask Vert.x questions ask them here!
9. Hello World public class MainVerticle extends Verticle {
public void start() { container.logger().info(MainVerticle start);
vertx.createHttpServer().requestHandler(new Handler() { public void
handle(HttpServerRequest req) {
req.response().headers().set(Content-Type, text/plain);
req.response().end(Hello World!); } }).listen(8080); } }
10. 1. 2. 3.
11. 1. 2. 3. 4. gradle project template 5. auto redeploy 6.
remote debugging
12. JDK 1.7 . Eclipse
13. 1. . 2. . 3. . 4. vertx . 5. Hello World .
http://vertx.io/downloads.html
14. 1. . 2. . 3. . 4. vertx . 5. Hello World . jee1@~ $ cat
.bashrc PATH=$PATH:/home/jee1/vert.x/bin jee1@~ $ source
.bashrc
15. 1. . 2. . 3. . 4. vertx . 5. Hello World . jee1@~ $ vertx
usage .
16. 1. . 2. . 3. . 4. vertx . 5. Hello World . jee1@work $
vertx run HelloWorldVerticle.java Verticle start. 8080 Hello World!
.
17. OS temp vertx.log . vert.x/conf/logging.properties # Put
the log in the system temporary directory #
java.util.logging.FileHandler.pattern = %t/vertx.log
java.uril.logging.FileHandler.pattern =
/home/jee1/vertx/log/vertx.log jee1@~ $ cat vertx/log/vertx.log
[vert.x-eventloop-thread-2] 03:06:37,789 INFO [null-
HelloWorldVerticle.java-704507910] Verticle start.
18. gradle project template Verticle . , Module . Module Maven
Gradle Gradle Groovy . . Gradle Gradle . Gradle
19. gradle project template 1. git clone eclipse 2. mod.json 3.
HelloWorldVerticle Module 4. Module
20. gradle project template 1. git clone eclipse 2. mod.json 3.
HelloWorldVerticle Module 4. Module jee1@work $ git clone
https://github.com/vert-x/vertx- gradle-template.git
my-vertx-module jee1@work $ cd my-vertx-module/
jee1@my-vertx-modyle $ git remote rm origin jee1@my-vertx-modyle $
./gradlew test jee1@my-vertx-modyle $ ./gradlew eclipse
21. gradle project template 1. git clone eclipse 2. mod.json 3.
HelloWorldVerticle Module 4. Module jee1@my-vertx-modyle $ vi
./src/main/resources/mod.json
main:com.mycompany.myproject.PingVerticle
22. gradle project template 1. git clone eclipse 2. mod.json 3.
HelloWorldVerticle Module 4. Module jee1@my-vertx-modyle $ vi
./src/main/resources/mod.json //
main:com.mycompany.myproject.PingVerticle main:HelloworldVerticle
jee1@my-vertx-modyle $ ./gradlew runModEclipse
23. gradle project template 1. git clone eclipse 2. mod.json 3.
HelloWorldVerticle Module 4. Module jee1@my-vertx-module $ vertx
runmod com.mycompany~my-module~0.0.1 cp bin jee1@my-vertx-module $
vi gradle/vertx.gradle task copyModJson( type:Copy, dependsOn:
'copyMod' , description: 'Copy the mod.json into the local mods
directory for runmod auto-redeploy' ) { file( "mods/$moduleName"
).mkdirs() from "build/mods/$moduleName/mod.json into
"mods/$moduleName } jee1@my-vertx-module $ ./gradlew
copyModJson
24. auto redeploy mod.json false main:HelloWorldVerticle,
auto-redeploy:true,
25. remote debugging vert.x/bin/vertx JVM_OPTS Eclipse remote
debugging (8000) remote debugging .
#JVM_OPTS="-XX:+CMSClassUnloadingEnabled -XX:- UseGCOverheadLimit
#JVM_OPTS=" JVM_OPTS="-Xdebug -
Xrunjdwp:transport=dt_socket,address=8000,server=y,suspe nd=n
26. DEMO :
27. Event Loops Verticle 1. Vert.x s Threads 2. Event Loops 3.
Verticle Instances 4. Event Loop & Verticle Instances 5.
Performance Test
28. Vert.x s Threads main thread 1 vert.x-eventloop-thread 4
vert.x-worker-thread 20
29. Event Loops eventloop-thread 4?
org.vertx.java.core.impl.VertxExecutorFactory.java public static
EventLoopGroup eventLoopGroup(String poolName) { int poolSize =
Integer.getInteger( "vertx.pool.eventloop.size" ,
Runtime.getRuntime().availableProcessors()); return new
NioEventLoopGroup(poolSize, new VertxThreadFactory(poolName)); }
jee1@my-vertx-module $ grep c processor /proc/cpuinfo 4
30. Verticle Instances -instances . Verticle EventLoopGroup
eventloop_thread Verticle . . jee1@my-vertx-module $ vertx runmod
com.mycompany~my-module~0.0.1 cp bin instances 10
org.vertx.java.platform.impl.DefaultPlatformManager.java
org.vertx.java.core.impl.DefaultContext.java
org.vertx.java.core.impl.DefaultVertx.java
31. Event Loop & Verticle Instances Event Loops Verticle
Instances instances 1 Verticle Event Loops eventloop- thread 1.
vertx-eventloop-thread-0 Verticle-0 Verticle-4 Verticle-8 2.
vertx-eventloop-thread-1 Verticle-1 Verticle-5 Verticle-9 3.
vertx-eventloop-thread-2 Verticle-2 Verticle-6 4.
vertx-eventloop-thread-3 Verticle-3 Verticle-7
32. Performance Test eventloop-thread 4 Verticle 1,2,4,8 .
Vertx http performance example . (https://github.com/vert-x/vertx-
examples/tree/master/src/raw/java/httpperf) jee1@my-vertx-module $
vertx runmod com.mycompany~my-module~0.0.1 cp bin (instances 2/4/8)
jee1@java $ vertx run perf / RateCounter.java cluster Starting
clustering No Cluster-host specified so using address 10.0.1.6
jee1@java $ vertx run httpperf / RerfClient.java instances 4
cluster Starting clustering No Cluster-host specified so using
address 10.0.1.6
33. Performance Test 1 71968 Rate : count / sec :
124666.66666666667 Average rate : 120609.15962650067 74968 Rate :
count / sec : 124666.66666666667 Average rate : 120771.52918578594
77968 Rate : count / sec : 123333.33333333333 Average rate :
120870.10055407346 80967 Rate : count / sec : 125375.12504168056
Average rate : 121036.96567737473 83967 Rate : count / sec :
123333.33333333333 Average rate : 121119.01104005145 86967 Rate :
count / sec : 123333.33333333333 Average rate : 121195.39595478745
89967 Rate : count / sec : 126000.0 Average rate :
121355.60816743918 92967 Rate : count / sec : 126000.0 Average rate
: 121505.48043929566 95968 Rate : count / sec : 123958.68043985339
Average rate : 121582.19406468823 98968 Rate : count / sec :
125333.33333333333 Average rate : 121695.9017056018
34. Performance Test 2 72824 Rate : count / sec :
179393.13104368123 Average rate : 168241.23915192793 75825 Rate :
count / sec : 176607.79740086637 Average rate : 168572.37059017475
78825 Rate : count / sec : 178666.66666666666 Average rate :
168956.54931810973 81825 Rate : count / sec : 176000.0 Average rate
: 169214.78765658417 84825 Rate : count / sec : 178000.0 Average
rate : 169525.49366342468 87825 Rate : count / sec : 172000.0
Average rate : 169610.01992598918 90825 Rate : count / sec :
171333.33333333334 Average rate : 169666.94192127718 93825 Rate :
count / sec : 175333.33333333334 Average rate : 169848.12150279776
96825 Rate : count / sec : 178000.0 Average rate :
170100.69713400464 99825 Rate : count / sec : 176666.66666666666
Average rate : 170298.02153769095
35. Performance Test 4 72069 Rate: count/sec:
189270.24325224926 Average rate: 173805.6584661921 75068 Rate:
count/sec: 190730.24341447148 Average rate: 174481.8031651303 78068
Rate: count/sec: 190000.0 Average rate: 175078.13700876158 81068
Rate: count/sec: 189333.33333333334 Average rate:
175605.66438052006 84069 Rate: count/sec: 191936.02132622458
Average rate: 176188.60697760174 87068 Rate: count/sec:
190063.3544514838 Average rate: 176666.51352965497 90068 Rate:
count/sec: 188666.66666666666 Average rate: 177066.21663631924
93069 Rate: count/sec: 193268.91036321226 Average rate:
177588.6707711483 96068 Rate: count/sec: 193397.79926642214 Average
rate: 178082.19178082192 99068 Rate: count/sec: 192666.66666666666
Average rate: 178523.84220939153
36. Performance Test 8 70314 Rate : count / sec :
185333.33333333334 Average rate : 161646.32932275222 73315 Rate :
count / sec : 186604.4651782739 Average rate : 162667.93971220078
76314 Rate : count / sec : 186728.90963654552 Average rate :
163613.4916267002 79313 Rate : count / sec : 187395.79859953318
Average rate : 164512.7532686949 82314 Rate : count / sec :
184605.1316227924 Average rate : 165245.28026824113 85313 Rate :
count / sec : 186728.90963654552 Average rate : 166000.492304807
88314 Rate : count / sec : 186604.4651782739 Average rate :
166700.63636569513 91315 Rate : count / sec : 177940.68643785405
Average rate : 167070.0323057548 94314 Rate : count / sec :
179393.13104368123 Average rate : 167461.882647327 97314 Rate :
count / sec : 178666.66666666666 Average rate :
167807.3041905584
37. Performance Test - 1 120K count/sec - 2 170K count/sec - 4
190K count/sec - 8 180K count/sec
38. http://vertx.io
http://helloworld.naver.com/helloworld/163784
http://www.infoq.com/jp/news/2013/05/high-volume-vertx
http://vertxproject.wordpress.com/2013/07/17/vert-x-2-0-0-final-is-
released/ http://m.javaworld.com/javaworld/jw-07-2013/130730-osjp-
enterprise-messaging-and-integration-with-
vertx.html?source=IFWNLE_nlt_jw_2013-07-30
http://www.infoq.com/jp/news/2013/08/tim_fox_vertx_2
39. .
LOAD MORE