Java 使用Reactor Netty连接到服务器消息队列
我正在尝试使用Reactor Netty连接到docker容器上运行的消息队列。我以独立的方式做这件事,因为依赖性问题,所以不使用SpringFlux 从Reactor Netty文档中的示例中,我看到了一种连接到服务器并获得响应的方法:Java 使用Reactor Netty连接到服务器消息队列,java,httpclient,project-reactor,reactor-netty,Java,Httpclient,Project Reactor,Reactor Netty,我正在尝试使用Reactor Netty连接到docker容器上运行的消息队列。我以独立的方式做这件事,因为依赖性问题,所以不使用SpringFlux 从Reactor Netty文档中的示例中,我看到了一种连接到服务器并获得响应的方法: public static void main(String[] args) { String response = HttpClient.create() .
public static void main(String[] args) {
String response =
HttpClient.create()
.headers(h -> h.add("my header", my_header)
.get()
.uri(my_uri)
.responseContent()
.aggregate()
.asString()
.block();
}
但是,当我稍后尝试通过System.out.println()显示输出时,什么也没有发生
我还试图了解如何使用:
磁通响应(双功能接收器)
但我不确定该怎么办。
我在文档中看到了一个名为Connection的类,它使用TCPClient并具有subscribe方法
我有点迷路了,你能告诉我在反应堆Netty中不使用弹簧通量的情况下实现这一点的正确方向吗
多谢各位
编辑:
经过一些实验,我得到了这个:
private Disposable subscribe() {
return HttpClient.create()
.headers(h -> h.add("my header", my_header)
.get()
.uri(my_uri)
.response((res, bytes) - > {
System.out.println(bytes.asString());
return bytes.asString();})
.subscribe();
}
这给了我一个难题,我如何使用它来实际读取响应的主体?因此,我想出了如何使用
jackson
库,从服务器接收数据,甚至将数据转换为JSON,以便代码更容易读取
private Disposable subscribe() {
return HttpClient.create()
.headers(h -> h.add("my header", my_header)
.get()
.uri(my_uri)
.response((resp, bytes) -> {
return bytes.asString();
})
.subscribe(response -> {
try {
consumeData(new ObjectMapper()
.readValue(response, MyData.class));
} catch (IOException ex) {
System.out.println("ERROR converting to json: " + ex);
}
});
}
似乎在使用subscribe()方法时,我可以监听传入的响应并对其进行处理。我仍然需要添加一种方法,以便在服务器停止或消息队列关闭时关闭连接,这样客户端就不会挂起不存在的消息队列。带有
块的示例应该可以运行,如果不是这样,请打开一个问题。您还可以通过添加.wiretap(true)
来跟踪网络流量。