当前位置: 首页 > news >正文

学生制作网站建设 维护东莞专业网络营销公司

学生制作网站建设 维护,东莞专业网络营销公司,cnnic 网站,国内平面设计公司基于netty的微服务网关Netflix Karyon提供了一个干净的框架来创建可用于云的微服务。 在您的组织中#xff0c;如果您使用包含Eureka的Netflix OSS堆栈进行服务注册和发现#xff0c;使用Archaius进行资产管理#xff0c;那么很可能会使用Karyon创建微服务。 Karyon最近发生… 基于netty的微服务网关 Netflix Karyon提供了一个干净的框架来创建可用于云的微服务。 在您的组织中如果您使用包含Eureka的Netflix OSS堆栈进行服务注册和发现使用Archaius进行资产管理那么很可能会使用Karyon创建微服务。 Karyon最近发生了很多变化我的目的是使用新版本的Karyon记录一个好的样本。 旧的细胞核称之为Karyon1是基于JAX-RS 1.0规格与新泽西的实施细胞核Karyon2的新版本仍然支持球衣也鼓励使用RX-的Netty这是一个定制版本的Netty用支持Rx-java 。 话虽如此让我跳入一个样本。 我对这个样本的目标是创建一个“乒乓”微服务该服务接受一个“ POST”消息并返回一个“ Acknowledgement” 以下是一个示例请求 { id: id, payload:Ping } 和预期的响应 {id:id,received:Ping,payload:Pong} 第一步是创建一个RequestHandler 顾名思义它是一个RX-Netty组件用于处理传入的请求 package org.bk.samplepong.app;import com.fasterxml.jackson.databind.ObjectMapper; import io.netty.buffer.ByteBuf; import io.netty.handler.codec.http.HttpMethod; import io.netty.handler.codec.http.HttpResponseStatus; import io.reactivex.netty.protocol.http.server.HttpServerRequest; import io.reactivex.netty.protocol.http.server.HttpServerResponse; import io.reactivex.netty.protocol.http.server.RequestHandler; import netflix.karyon.transport.http.health.HealthCheckEndpoint; import org.bk.samplepong.domain.Message; import org.bk.samplepong.domain.MessageAcknowledgement; import rx.Observable;import java.io.IOException; import java.nio.charset.Charset;public class RxNettyHandler implements RequestHandlerByteBuf, ByteBuf {private final String healthCheckUri;private final HealthCheckEndpoint healthCheckEndpoint;private final ObjectMapper objectMapper new ObjectMapper();public RxNettyHandler(String healthCheckUri, HealthCheckEndpoint healthCheckEndpoint) {this.healthCheckUri healthCheckUri;this.healthCheckEndpoint healthCheckEndpoint;}Overridepublic ObservableVoid handle(HttpServerRequestByteBuf request, HttpServerResponseByteBuf response) {if (request.getUri().startsWith(healthCheckUri)) {return healthCheckEndpoint.handle(request, response);} else if (request.getUri().startsWith(/message) request.getHttpMethod().equals(HttpMethod.POST)) {return request.getContent().map(byteBuf - byteBuf.toString(Charset.forName(UTF-8))).map(s - {try {Message m objectMapper.readValue(s, Message.class);return m;} catch (IOException e) {throw new RuntimeException(e);}}).map(m - new MessageAcknowledgement(m.getId(), m.getPayload(), Pong)).flatMap(ack - {try {return response.writeStringAndFlush(objectMapper.writeValueAsString(ack));} catch (Exception e) {response.setStatus(HttpResponseStatus.BAD_REQUEST);return response.close();}});} else {response.setStatus(HttpResponseStatus.NOT_FOUND);return response.close();}} } 该流程是完全异步的并由RX-java库在内部进行管理Java 8 Lambda表达式也有助于使代码简洁。 您将在这里看到的一个问题是路由逻辑控制器的哪个uri与实际的控制器逻辑混合在一起我认为这已得到解决 。 有了此RequestHandler就可以使用原始的RX-Netty在独立的Java程序中启动服务器本质上就是这样将在端口8080处启动一个端点来处理请求 public final class RxNettyExample {public static void main(String... args) throws Exception {final ObjectMapper objectMapper new ObjectMapper();RxNettyHandler handler new RxNettyHandler();HttpServerByteBuf, ByteBuf server RxNetty.createHttpServer(8080, handler);server.start(); 但是这是本机的Rx-netty方式对于支持云的微服务而言必须发生一些事情该服务应向Eureka注册并应响应Eureka的运行状况检查并应能够使用Archaius加载属性。 因此对于Karyon2主程序中的启动看起来有点不同 package org.bk.samplepong.app;import netflix.adminresources.resources.KaryonWebAdminModule; import netflix.karyon.Karyon; import netflix.karyon.KaryonBootstrapModule; import netflix.karyon.ShutdownModule; import netflix.karyon.archaius.ArchaiusBootstrapModule; import netflix.karyon.eureka.KaryonEurekaModule; import netflix.karyon.servo.KaryonServoModule; import netflix.karyon.transport.http.health.HealthCheckEndpoint; import org.bk.samplepong.resource.HealthCheck;public class SamplePongApp {public static void main(String[] args) {HealthCheck healthCheckHandler new HealthCheck();Karyon.forRequestHandler(8888,new RxNettyHandler(/healthcheck,new HealthCheckEndpoint(healthCheckHandler)),new KaryonBootstrapModule(healthCheckHandler),new ArchaiusBootstrapModule(sample-pong),KaryonEurekaModule.asBootstrapModule(),Karyon.toBootstrapModule(KaryonWebAdminModule.class),ShutdownModule.asBootstrapModule(),KaryonServoModule.asBootstrapModule()).startAndWaitTillShutdown();} } 现在它基本上已经可以使用云了该版本的程序在启动时将在Eureka进行干净注册并公开运行状况检查端点。 它还在端口8077处公开了一套简洁的管理端点。 结论 我希望这对使用Karyon2开发基于Netflix OSS的内容有很好的介绍。 整个示例可在我的github仓库中找到 https//github.com/bijukunjummen/sample-ping-pong-netflixoss/tree/master/sample-pong。 作为后续我将展示如何使用spring-cloud开发相同的服务这是Spring创建微服务的方式。 翻译自: https://www.javacodegeeks.com/2015/06/rx-netty-and-karyon2-based-cloud-ready-microservice.html基于netty的微服务网关
http://www.yutouwan.com/news/338722/

相关文章:

  • 推广普通话黑板报百度seo排名
  • 高端手机网站建设免费淘宝客网站建设
  • 做网站怎么优化网站总体设计
  • 黑龙江省建设协会网站首页二级院系网站建设情况
  • 做一个网站先做前段 还是后端郑州购物网站建设
  • 试列出网站开发建设的步骤企业微信平台
  • 科技公司企业网站建设网站开发需要团队
  • 领导高度重视门户网站建设网络建设文章网站
  • 长春市网站制作东莞横沥理工学校
  • 模板下载网站网站排名点击
  • 网站建设销售合作合同范本泉州市住房和乡村建设网站
  • dnf怎么做钓鱼网站徐州做汽车销售的公司网站
  • 外外贸网站推广方案网站案例代码
  • wordpress 建的网站吗wordpress restfulapi
  • 自己在公司上班做网站宣传 侵权吗网络系统集成
  • 销售型网站怎么做的wordpress调用单页面跳转
  • 永久免费搭建网站怎么做查询网站
  • wordpress下载验证码整站seo技术搜索引擎优化
  • 平阳网站建设手机网站建站 服务器
  • 谷歌优化网站链接怎么做个人邮箱申请
  • 合肥网站建设第一品牌吉安公司做网站
  • 做一个国外的网站我是新手如何做跨境电商
  • 房产中介网站源码wordpress图像缩放插件
  • 安徽网站设计定制网站建设中模板
  • 传奇网站架设教程微信授权登录第三方网站开发
  • 百度云搭建网站wordpress 微信打赏
  • 专业设计网站公司金币交易网站开发
  • 专业做招聘的网站有哪些在线网站模板
  • 资讯类网站怎么做大石桥网站建设
  • 网站建设用哪个好延吉网站网站建设