我正在尝试测试ActiveMQ连接并返回一个值。 它在线崩溃:
httpResponse = client.execute(theHttpGet);
这不是我的代码,我正在尝试调试它。谁能帮助我理解为什么代码使用 HttpGet
?
public ActivemqBrokerInfo(String serverAddress, int port, String apiUrl, int timeout) {
// Default Activemq location
this.serverAddress = String.format("http://%s:%s/%s", serverAddress, port, apiUrl);
int timeoutInMs = timeout;
HttpClientBuilder builder = HttpClientBuilder.create();
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(timeoutInMs).build();
builder.setDefaultRequestConfig(requestConfig);
client = builder.build();
}
public ActivemqBrokerInfo(String serverAddress) {
this(serverAddress, DEFAULT_PORT, DEFAULT_API_URL, DEFAULT_TIMEOUT);
}
@Override
public boolean testConnection() {
HttpGet theHttpGet = new HttpGet(serverAddress);
theHttpGet.addHeader("test-header-name", "test-header-value");
HttpResponse httpResponse = null;
try{
httpResponse = client.execute(theHttpGet);// Code is crashing on this line
} catch (IOException ex){
LOGGER.error("Broker down: ", ex);
}
return httpResponse != null;
}
当ActiveMQ运行时,通常会启动嵌入式Web服务器。此 Web 服务器用于托管 Web 管理控制台以及 Jolokia 端点,该端点充当代理 MBean 前面的 HTTP 门面。换句话说,任何客户端都可以将 HTTP 请求发送到代理上特殊格式的 URL,以从底层管理 Bean 获取结果。这正是您的代码位似乎正在做的事情。它似乎正在向Jolokia端点发送HTTP请求(即 api/jolokia
(,以确定经纪人是否还活着。
根据提供的信息,无法确定testConnection()
未成功返回的原因,因为您没有包含有关代理配置或状态的信息。
我建议您添加其他日志记录以查看可能发生的事情并捕获Exception
而不仅仅是IOException
。