我正在使用Spring WebSockets實現一個WebSockets應用程序。Websockets/STOMP與ActiveMQ Artemis Wildfly 10不能正常工作
作爲STOMP代理,我想使用Wildfly的Artemis(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:13,890 INFO [org.apache.activemq.artemis.core.server] (Server服務線程池 - 64 )AMQ221020: 已啓動接受器localhost:61613用於協議[STOMP] 16:57:13,892 INFO [org.apache.activemq.artemis.core.server](ServerService線程池 - 64)AMQ221007:服務器現在處於活動狀態
然而,德恩我送使用Spring的SimpMessagingTemplate的第一條消息:
template.convertAndSend(topic, payload);
我得到的錯誤
錯誤 [org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler] (反應器 - tcp-io-1)Received ERROR {message = [AMQ339001:Destination does not exist:/ topic/abc/12345/xyz]} session = system
使用Stomp,事先不需要創建主題。我怎麼能告訴Artemis自動創建它?
建議將「主機」參數添加到stomp-acceptor。否則無法從其他主機訪問,因爲「主機」的默認值爲localhost:(用服務器的IP地址替換) –