Я использую приложение WebSockets с использованием Spring WebSockets.Websockets/STOMP с ActiveMQ Artemis on Wildfly 10 не работает
Как брокер STOMP, я хочу использовать Artemis Wildfly (Active MQ).
я сделал следующую конфигурацию в автономном-full.xml:
Добавление следующей акцептор:
<acceptor name="stomp-acceptor" factory-class="org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory"> <param name="protocols" value="STOMP" /> <param name="port" value="61613" /> </acceptor>
добавить нового пользователя приложения гостя/гостей в application-users.properties используя add-user.bat
Добавить следующую функцию StompConfiguration (сокращенно):
@Configuration @EnableWebSocketMessageBroker public class StompConfiguration extends AbstractWebSocketMessageBrokerConfigurer { @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS(); } @Override public void configureMessageBroker(MessageBrokerRegistry config) { config.setApplicationDestinationPrefixes("/app"); config.enableStompBrokerRelay("/topic", "/queue").setRelayHost("localhost").setRelayPort(61613) .setClientLogin("guest").setClientPasscode("guest"); } }
Это, кажется, работает хорошо при запуске:
16: 57: 13890 INFO [org.apache.activemq.artemis.core.server] (ServerService бассейн Thread - 64) AMQ221020: Начальный акцептор на localhost: 61613 для протоколов [STOMP] 16: 57: 13,892 INFO [org.apache.activemq.artemis.core.server] (пул потоков ServerService - 64) AMQ221007: теперь сервер работает
Однако Венен я посылаю первое сообщение, используя SimpMessagingTemplate Спринга:
template.convertAndSend(topic, payload);
Я получаю ошибку
ОШИБКА [org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler] (реактор- ТСР-IO-1) Полученное сообщение ERROR {= [AMQ339001: Пункт назначения не существует:/тема/ABC/12345/хуг]} сессия = система
Использование Stomp, не обязательно создавать тему заранее. Как я могу сказать, что Артемис создал его автоматически?
желательно добавить параметр «хозяин» к топовому акцептору. В противном случае доступ к нему с другого хоста невозможен, поскольку по умолчанию для «хоста» является localhost: (замените его IP-адресом вашего сервера) –