我正在尝试创建一个需要执行ssh命令的反应式应用程序。
目前,有一个SSH客户端(基于sshd mina)正在阻塞(也许有一种方法可以以非阻塞的方式使用它,但我不知道)。我的想法是围绕这个阻塞客户端创建一个包装器,这样我就可以像下面的代码一样将阻塞调用转换为Mono。
public class SshReactiveClient extends AutoCloseable {
private final SshClient sshClient;
public SshReactiveClient(final SshClient sshClient) {
this.sshClient = sshClient;
}
public Mono<SshResponse> open(final Duration timeout) {
return Mono.fromCallable(() -> sshClient.open(timeout))
.subscribeOn(Schedulers.boundedElastic());
}
public Mono<SshResponse> execCommand(final SshCommand command, final Duration timeout) {
return Mono.fromCallable(() -> sshClient.execCommand(command, timeout))
.subscribeOn(Schedulers.boundedElastic());
}
@Override
public void close() throws Exception {
sshClient.close();
}
}
首先,这样做是不是一个好主意?什么会更好?
第二点是如何编写代码,以便我可以使用前面命令的响应执行一系列ssh命令来执行下一个命令?
你的理解是正确的。您需要包装阻塞或同步代码,并在单独的调度程序上运行它。更好的方法是客户端支持异步接口。
要按顺序执行命令,需要使用反应式API构建流。
execCommand(command1)
.flatMap(res -> {
var command2 = getCommand2(res);
execCommand(command2)
})
.flatMap(res -> {
var command3 = getCommand3(res);
execCommand(command3)
})
我希望客户不会等待4秒然后得到实际的结果。如您所见,服务器在22:44:21.126上开始发出onNext(),客户端在22:44:24.159上获得结果。所以我不明白如果webclient有这种行为,为什么它被称为非阻塞客户端。
我对假装很陌生。今天就发现吧……当我读到Spring Cloud Feign时,我的第一个问题是:“您如何包装您的Fiign客户机?” 我举个例子。假设我们有2个微服务M1和M2。M2使用来自M1的endpoint。 null 也许我完全错了,请指正。 多谢!拜拜
问题内容: 我想在Python中运行一个程序,该程序每秒通过Web套接字向Tornado服务器发送一条消息。我一直在websocket-client上使用该示例; 该示例不起作用,因为它将停止while循环的执行。 有人可以给我一个例子,说明如何正确地将其实现为线程类,我既可以调用它的send方法,又可以接收消息? 问题答案: 在他们的github页面上有一个例子可以做到这一点。好像您是从该示例开
如另一个问题中所述,当使用Undertow时,所有处理都应该在专用的工作线程池中完成,如下所示: 我知道可用于显式地告诉Undertow在专用的线程池中调度请求以阻止请求。我们可以通过将包装在实例中来修改上面的示例,如下所示: 调用此方法将exchange置于阻塞模式,并创建一个BlockingHttpExchange对象来存储流。当交换处于阻塞模式时,输入流方法变得可用,除了阻塞和非阻塞模式之间
我们目前正在使用grpc starter包实现一个高吞吐量的spring boot应用程序https://github.com/yidongnan/grpc-spring-boot-starter,这是一个基于客户机-服务器的应用程序。我们正在将遗留的RESTendpointCRUD操作迁移到GRPC。为了获得此服务的最佳设计,我们需要以下问题的帮助: > 如果单个不可变GRPC阻塞存根客户端实例
问题内容: 我使用nio频道构建了一个简单的聊天应用程序。我对网络和线程非常陌生。该应用程序用于与服务器通信(服务器/客户端聊天应用程序)。 我的问题是服务器不支持多个客户端。我该如何解决这个问题?我的代码中的错误是什么? 问题答案: 初学者Hello NIO Server的 理想之地