Мы пытаемся настроить интерфейс REST, как указано в документации ActiveMQ Artemis . Он работает в версиях 2.10.1 и 2.9.0, но только в автономном режиме. Кластеризованный 2.9.0 - это наша текущая производственная среда, и именно здесь мы пытаемся настроить интерфейс REST.
У нас есть кластерное активное / пассивное решение, использующее файловый журнал. У нас есть Netscaler перед нашим активным / пассивным решением. Мы нашли этот отчет об ошибке , который мы видим в нашей системе. Эта ошибка решена в 2.3.0, поэтому я думаю, что мы должны запустить TCP вместо in-vm? Как мы это настроим?
Конфиг для нашего рабочего StdAlone:
<web bind="http://lxappqmanv01:8161" path="web">
<app url="activemq-branding" war="activemq-branding.war"/>
<app url="artemis-plugin" war="artemis-plugin.war"/>
<app url="console" war="console.war"/>
<app url="rest" war="artemis-rest-1.0-SNAPSHOT.war"/>
</web>
В брокере. xml Мы добавили:
<acceptor name="in-vm">vm://0</acceptor>
В сообщениях покоя . xml
<rest-messaging>
<server-in-vm-id>0</server-in-vm-id>
<use-link-headers>false</use-link-headers>
<default-durable-send>false</default-durable-send>
<dups-ok>true</dups-ok>
<topic-push-store-dir>topic-push-store</topic-push-store-dir>
<queue-push-store-dir>queue-push-store</queue-push-store-dir>
<producer-time-to-live>0</producer-time-to-live>
<producer-session-pool-size>10</producer-session-pool-size>
<session-timeout-task-interval>1</session-timeout-task-interval>
<consumer-session-timeout-seconds>300</consumer-session-timeout-seconds>
<consumer-window-size>-1</consumer-window-size>
<url>vm://0</url>
</rest-messaging>
В сети. xml
<web-app>
<listener>
<listener-class>com.myapp.artemis.MyResteasyBootstrap</listener-class>
</listener>
<listener>
<listener-class>org.apache.activemq.artemis.rest.integration.RestMessagingBootstrapListener</listener-class>
</listener>
<filter>
<filter-name>Rest-Messaging</filter-name>
<filter-class>org.jboss.resteasy.plugins.server.servlet.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>Rest-Messaging</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Работает нормально (при включении ниже класса):
package com.myapp.artemis;
import javax.servlet.ServletContextEvent;
import org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap;
import org.jboss.resteasy.spi.Registry;
public class MyResteasyBootstrap extends ResteasyBootstrap {
@Override
public void contextInitialized(ServletContextEvent event)
{
super.contextInitialized(event);
event.getServletContext().setAttribute(Registry.class.getName(), deployment.getRegistry());
}
}
Как я могу заставить это работать в кластерной среде? Как мы можем использовать TCP вместо in-vm?