博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
响应式微服务 in java 译 Message-Based Microservices<十>
阅读量:6208 次
发布时间:2019-06-21

本文共 1599 字,大约阅读时间需要 5 分钟。

hot3.png

Message-Based Microservices

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

Project Creation

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

193231_B3EG_2277632.png 

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

Writing the Message-Driven Verticle

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

193550_tpHM_2277632.png

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

194139_NmEF_2277632.png

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

现在我们写一个 microservice 来消费这个服务。

Initiating Message-Based Interactions

在这节中,我们创建另一个 microservice 来调用 hello microservice ,通过发送消息到 hello 地址并且获取一个回应。microservice 重现实现和之前一样的逻辑,调用两次(once with Luke and once with Leia)

如旧,我们创建一个新的项目:

194635_CEVU_2277632.png

这里我们将会添加 Vert.x RxJava 支持,获取 RXified APIs 的优势,如果你在前的部门更新了Infinispan 配置,那么你需要复制到新的项目。

现在编辑io.vertx.book.message.HelloConsumerMicroservice,既然我们决定使用 Rxjava,将导入部分改成匹配 io.vertx.rxjava.core.AbstractVerticle,然后重新实现的 start 方法如下:

195106_dHZY_2277632.png

这段代码换个之前章节的代码很类似,替换调 WebClient 响应 HTTP服务。我们将使用 Event Bus 来发送消息到 hello 地址,提取回复的主体。我们使用ZIP操作检索两个响应并构建最终结果。在 subscibe 方法中,我们将最终结果打印到控制台或打印堆栈跟踪。

让我们把这个与HTTP服务器结合起来。当收到HTTP请求时,我们会调用hello服务两次,并将生成的结果作为响应返回。

195538_P1oD_2277632.png

最后的代码只是把与 event bus 交互的塞进 requestHandler 和处理 HTTP 响应。在发生故障时,我们返回一个包含错误消息的JSON对象。

如果你运行的方式以 vertx:run -Dvertx.runArgs="-cluster -Djava.net.preferIPv4Stack=true" 启动,你可以在浏览器输入http://localhost:8082,你将可以看到如下:

200107_vDye_2277632.png

200426_Ikjt_2277632.png  

原文地址:

https://developers.redhat.com/promotions/building-reactive-microservices-in-java/

110506_9gQF_2277632.png

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

223108_3TsV_2277632.png

转载于:https://my.oschina.net/u/2277632/blog/1618085

你可能感兴趣的文章
关于 VUE的select 初始值设置问题
查看>>
php curl请求信息和返回信息设置代码实例,特别是在请求过程中存在重定向的时候获取请求返回头信息...
查看>>
PHP实现异步调用方法研究
查看>>
mysql分组查询
查看>>
php缓存技术总结
查看>>
Laravel源码入门-启动引导过程(二)bootstrap/autoload.php
查看>>
mysql主从监控
查看>>
hue(03)、Hue切换MySql作为元数据库
查看>>
StringBuffer&StringBuilder详解
查看>>
css3动画属性系列之transform细讲scale缩放
查看>>
交换机的工作机制--VLAN及思科交换机的配置
查看>>
centos7 常用命令
查看>>
jQuery零基础入门——(九)扩展
查看>>
kettle常见问题
查看>>
目录帖:浅谈算法和数据结构
查看>>
mysql格式化日期
查看>>
php扩展安装
查看>>
(二)Centos7下Yum更新安装PHP5.5,5.6,7.0
查看>>
关于织梦如何使用里面的Getpinyin()函数
查看>>
Ngrok搭建服务器
查看>>