Добавьте следующие функции и получать инкубационные к концу объекта возвращается в amq.js файл (то есть после того, как функции testPollHandler):
setUri: function(newUri) {
uri = newUri;
},
getUri: function() {
return uri;
}
Затем сделать что-то вроде этого, чтобы перейти к следующему серверу если соединение не может быть установлено:
var ACTIVEMQ_SERVERS = ["http://server1:8161/ajax/amq","http://server2:8161/ajax/amq"];
var amq = org.activemq.Amq;
function connectStatusHandler(connected) {
if (!connected) {
var index = _.indexOf(ACTIVEMQ_SERVERS, amq.getUri());
var newIndex = (index + 1) % ACTIVEMQ_SERVERS.length;
var uri = ACTIVEMQ_SERVERS[newIndex];
amq.setUri(uri);
if (window.console) {
console.log("Lost connection. Attempting next server: " + uri);
}
}
}
amq.init({
uri: ACTIVEMQ_SERVERS[0],
logging: true,
timeout: 20,
connectStatusHandler: connectStatusHandler,
logging: true
});
Вам также необходимо CORS включены в сервер Jetty, на котором размещена AjaxServlet, если вы хотите установить соединение между серверами. Чтобы сделать это, включите встроенный Jetty CORS фильтр со следующей конфигурацией в файле web.xml:
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
<init-param>
<param-name>allowedOrigins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>allowedMethods</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>allowedHeaders</param-name>
<param-value>*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>cross-origin</filter-name>
<url-pattern>/amq/*</url-pattern>
</filter-mapping>
Хм, у нас есть поддержка балансировки нагрузки, но мы используем его в основном для переключения между DR и нормальным режимом. Интересно, был ли простой способ для этого. – Bhanu
Ну, нет поддержки на стороне клиента в amq.js для перехода на другой ресурс. Если вы не хотите переключиться на выполнение настройки каким-либо другим способом, вам нужно полагаться на механизм перехода на отказ HTTP, такой как балансировщик нагрузки (может даже быть балансировщик загрузки программного обеспечения с использованием Nginx или аналогичного) –