我试图了解https://vertx.io/VerentleSystem和事件循环线程。
考虑下面的代码:
public class MyVerticle extends AbstractVerticle {
public void start() {
vertx.createHttpServer().requestHandler(req -> {
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
}).listen(8080);
}
}
上面的代码将创建一个新的Verticle(MyVerticle)
,它也拥有事件循环线程。
使用vertx创建
HTTP服务器时。createHttpServer()
,它是否为HTTP服务器
传播了新的垂直方向?如果正确,HTTP服务器
运行在自己的带有事件循环线程的Verticle上,两个Verticle处于活动状态。
是否
MyVerster
事件循环线程:
requestHandler(req -> {
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
}
是否执行已注册的请求处理程序?如果是,当请求传入时,
MyVerticle
如何从Http服务器
接收事件以运行处理程序?
上面的代码不清楚,这两个垂直线是如何相互通信的。如果有人能澄清,那就太好了。
最新消息
我试图描述这样的情景:
假设我部署了同一个顶点的两个实例,那么每个顶点都有自己的事件循环,HTTP服务器将启动两次。
当用户发送第一个请求时,它将在垂直1上处理第二个请求,在垂直2上处理第二个请求。如果我的假设正确,那么事件循环线程彼此独立。对我来说,这意味着对我来说,它不再是单线程的。
例如:
public class MyVerticle extends AbstractVerticle {
final int state;
public void start() {
vertx.createHttpServer().requestHandler(req -> {
state = state + 1;
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
}).listen(8080);
}
}
当我改变状态时,我必须在
Verticle
之间进行同步?
我很确定我错了,这意味着我还不明白顶点的概念。
垂直体是与事件循环关联的部署单元。在您的示例中,verticle控制HTTP服务器(使用listen
和close
方法)。HTTP服务器将使用控制它的垂直体的事件循环。
当您部署同一个verticle的两个实例时(将部署选项设置为2),每个verticle将有自己的事件循环,HTTP服务器将启动两次。绑定HTTP服务器的第一个垂直链接触发服务器绑定操作,而第二个垂直链接将在第一个垂直链接启动的实际服务器上注册其请求处理程序(因为它们使用相同的端口)。当服务器接受一个新连接时,它将在它知道的两个垂直实例上对连接进行负载平衡。这在文档的本节中进行了说明https://vertx.io/docs/vertx-core/java/#_server_sharing.
verticle通信的推荐方式是事件总线。它提供了一个轻量级的、快速的、异步的消息传递。根据用例的不同,共享数据结构也可能是合适的。
httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。 通常,httpd不应该被直接调用,而应该在类Unix系统中由apachectl调用,在Windows NT/2000/XP/2003中作为服务运行和在Windows 95/98/ME中作为控制台程序运行. 语法 httpd [ -d serverroot ]
我想测试一个连接到Github api的应用程序,下载一些记录并对其进行处理。我想要一个模拟对象,我做了如下操作: 看起来不错吧?我应该在thenReturn中输入什么(它需要HttpResponse,但我不知道如何创建)。谢谢你的回答。如果你有更好的想法,我将不胜感激。 更新:字符串响应是一个示例响应
我正在从我的角UI调用Spring引导REST服务。只要Spring Boot Rest服务作为Spring Boot应用程序执行,它就运行良好。但是一旦我将其转换为WAR文件并部署在Jboss 6.2.4服务器上,我就会得到404。我看到来自UI的REST服务调用成功,但请求JSON没有通过。在请求JSON上,我正在传递2个字符串和一个上传的excel文件。 这是我的angular UI htt
我正在使用oauth签名生成我的oauth签名,以便与woocommerce api连接。我遵循了woocommerce rest api文档中所述的所有步骤: 所需的参数是:oauth_consumer_密钥、oauth_时间戳、oauth_nonce、oauth_签名和oauth_签名方法。oauth_版本不是必需的,应该省略。OAuth nonce可以是消费者密钥唯一的任意随机生成的32个字
我正在使用MEAN stack构建的SPA中实现fb身份验证。虽然我已经使用facebook token passport策略成功实现了fb身份验证,但我在保护APIendpoint方面遇到了问题。因为为此,我需要在$http服务中同时传递经过身份验证的用户对象和访问令牌,并且我已经尝试将访问令牌作为用户对象的属性和头属性传递,但仍然是401(未经授权的错误)。下面是我的代码片段。 护照留档显示“
我有以下curl命令,它在bash shell中运行良好 我现在想通过一个简单的网页运行这个按钮点击。这是我的Javascript 但是当我通过网页按钮点击运行这个javascript时,它给我以下错误“网络错误:500内部服务器错误-http://ec2-54-226-250-92.compute-1.amazonaws.com:8080/ocr”,我的成功()方法永远不会被调用。 正如我所说,