您的位置:首页 > 编程语言 > Java开发

响应式微服务 in java 译 Message-Based Microservices<十>

2018-02-03 00:00 791 查看
摘要: 响应式微服务 in java 译 <十>

Message-Based Microservices

让我们重新实现 hello microservice,这次我们用 event bus 取代 HTTP 服务来接受请求,该 microservice对消息作出响应。

Project Creation

让我们创建一个新的项目,这次我们将加入 Innispan 依赖,一个内存数据系统被用来管理集群:



一旦创建好了,我们可能需要配置 Infinispan 来搭建集群。默认配置使用 广播(multicast)来发现节点。如果你的网络支持广播(multicast),将会很好,另一面,需要检查代码目录resource/cluster。

Writing the Message-Driven Verticle

编辑 src/main/java/io/vertx/book/message/HelloMicroser vice.java 文件和更新 start 方法:



这段代码从 eventbus 注册一个消费者地址 hello,当一个消息接受的时候,它会响应它。根据传入消息是否有空体,我们计算不同的响应。在之前章节的例子中没我们发送一个 JSON 对象。你可能疑惑为什么我们在服务端返回 JSON 格式。很快你将会看到原因,verticle 写好后没,我们将之运行起来:



-cluster 参数告诉 Vert.x 以集群的模式启动。

现在我们写一个 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/


有什么讨论的内容,可以加我微信公众号:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Vert.x