我正在使用Spring WebSockets实现WebSockets应用程序。

作为STOMP经纪人,我想使用Wildfly的Artemis(Active MQ)。

我在standalone-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>

使用add-user.bat将新的应用程序用户guest / guest添加到application-users.properties
添加以下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]
  (ServerService线程池-64)AMQ221020:在以下位置启动了Acceptor
  协议的本地主机:61613 [STOMP] 16:57:13,892信息
  [org.apache.activemq.artemis.core.server](ServerService线程池
  -64)AMQ221007:服务器现已上线


但是,我使用Spring的SimpMessagingTemplate发送了第一条消息:

template.convertAndSend(topic, payload);


我得到错误


  错误
  [org.springframework.messaging.simp.stomp.StompBrokerRelayMessageHandler]
  (reactor-tcp-io-1)收到错误{{message = [AMQ339001:Destination
  不存在:/ topic / abc / 12345 / xyz]}
  会话=系统


使用Stomp,无需事先创建主题。我如何告诉Artemis自动创建它?

最佳答案

就我而言,有2个问题导致此错误消息:

1)
第一个问题是主题的名称不是以“ jms.topic”开头的,但是Artemis似乎希望如此(无论出于何种原因...)。

通过将代码更改为

template.convertAndSend("jms.topic." + topic, payload);


我可以解决问题。

请注意,还需要更改StompBrokerRelay配置:

 config.enableStompBrokerRelay("jms.topic")


2)该应用程序现在可以正常工作,但是当我有多个客户端和一个未订阅该主题的客户端时,该错误再次出现。此错误及其解决方案(升级至Artemis 1.3)的描述如下:How update WildFly 10.1.0Final Apache Artemis 1.1.0 to Apache Artemis 1.3

10-05 18:33