Message-Based Microservicesjava
让咱们从新实现 hello microservice,此次咱们用 event bus 取代 HTTP 服务来接受请求,该 microservice对消息做出响应。react
Project Creation浏览器
让咱们建立一个新的项目,此次咱们将加入 Innispan 依赖,一个内存数据系统被用来管理集群:服务器
一旦建立好了,咱们可能须要配置 Infinispan 来搭建集群。默认配置使用 广播(multicast)来发现节点。若是你的网络支持广播(multicast),将会很好,另外一面,须要检查代码目录resource/cluster。微信
Writing the Message-Driven Verticle网络
编辑 src/main/java/io/vertx/book/message/HelloMicroser vice.java 文件和更新 start 方法:ui
这段代码从 eventbus 注册一个消费者地址 hello,当一个消息接受的时候,它会响应它。根据传入消息是否有空体,咱们计算不一样的响应。在以前章节的例子中没咱们发送一个 JSON 对象。你可能疑惑为何咱们在服务端返回 JSON 格式。很快你将会看到缘由,verticle 写好后没,咱们将之运行起来:spa
-cluster 参数告诉 Vert.x 以集群的模式启动。.net
如今咱们写一个 microservice 来消费这个服务。对象
Initiating Message-Based Interactions
在这节中,咱们建立另外一个 microservice 来调用 hello microservice ,经过发送消息到 hello 地址而且获取一个回应。microservice 重现实现和以前同样的逻辑,调用两次(once with Luke and once with Leia)
如旧,咱们建立一个新的项目:
这里咱们将会添加 Vert.x RxJava 支持,获取 RXified APIs 的优点,若是你在前的部门更新了Infinispan 配置,那么你须要复制到新的项目。
如今编辑io.vertx.book.message.HelloConsumerMicroservice,既然咱们决定使用 Rxjava,将导入部分改为匹配 io.vertx.rxjava.core.AbstractVerticle,而后从新实现的 start 方法以下:
这段代码换个以前章节的代码很相似,替换调 WebClient 响应 HTTP服务。咱们将使用 Event Bus 来发送消息到 hello 地址,提取回复的主体。咱们使用ZIP操做检索两个响应并构建最终结果。在 subscibe 方法中,咱们将最终结果打印到控制台或打印堆栈跟踪。
让咱们把这个与HTTP服务器结合起来。当收到HTTP请求时,咱们会调用hello服务两次,并将生成的结果做为响应返回。
最后的代码只是把与 event bus 交互的塞进 requestHandler 和处理 HTTP 响应。在发生故障时,咱们返回一个包含错误消息的JSON对象。
若是你运行的方式以 vertx:run -Dvertx.runArgs="-cluster -Djava.net.preferIPv4Stack=true" 启动,你能够在浏览器输入http://localhost:8082,你将能够看到以下:
原文地址:
https://developers.redhat.com/promotions/building-reactive-microservices-in-java/
有什么讨论的内容,能够加我微信公众号: