2016-02-25 5 views
2

У меня есть приложение для загрузки весны, и он получает топик по подписке на тему веб-сеток от клиентов, которые будут перенаправлены на мой встроенный брокер activemq.Весенняя загрузка и встроенная конфигурация хоста activeemq

Мой код, чтобы начать мой встроенный ActiveMQ брокер

@SpringBootApplication 
public class RttApplication { 

public static void main(String[] args) throws Exception { 
    ConfigurableApplicationContext ctx = SpringApplication.run(RttApplication.class, args); 
    BrokerService brokerService = new BrokerService(); 
    brokerService.setPersistent(false); 
    brokerService.setUseJmx(false); 
    brokerService.addConnector("vm://localhost:0"); 
    brokerService.setBrokerName("event"); 
    brokerService.start(); 
} 

} 

Моя весна брокер класс конфигурации реле

@Configuration 
@EnableWebSocketMessageBroker 
public class MessageBrokerConfigurer extends AbstractWebSocketMessageBrokerConfigurer { 
    @Override 
    public void registerStompEndpoints(StompEndpointRegistry registry) { 
     registry.addEndpoint("/event").withSockJS(); 
    } 

    @Override 
    public void configureMessageBroker(MessageBrokerRegistry registry) { 
     registry.enableStompBrokerRelay("/topic").setRelayHost("vm://localhost").setRelayPort(0); 
     registry.setApplicationDestinationPrefixes("/app"); 
    } 
} 

Но он показывает это, когда я запустить приложение

2016- 02-25 15: 44: 34.678 INFO 7604 --- [главная] oaactivemq.broker.TransportConnector: Разъем М.: // локальный: 0 Started

2016-02-25 15: 44: 34,694 ИНФО 7604 --- [Основной] o.apache.activemq.broker.BrokerService: Apache ActiveMQ 5.7.0 (событие , ID: PC13082-53189-1456386274543-0: 1) начал

2016-02-25 15: 44: 34,694 ИНФО 7604 --- [Основной] o.apache.activemq.broker.BrokerService: Для получения помощи или более информации смотрите: http://activemq.apache.org

2016-02-25 15: 44: 39,532 INFO 7604 --- [eactor-ТСР-IO-2] r.io.net.impl.netty.tcp.NettyTcpClient: Не удалось подключиться к vm: // localhost: 0. Попытка повторного подключения в 5000 мс.

+0

Вы начинаете брокер ПОСЛЕ того, как вы открываете приложение. Это не сработает. Также почему вы не позволяете Весне начать брокера? Просто добавьте несколько свойств в 'application.properties', и все готово. –

+0

Какие свойства я могу добавить специально для application.properties? есть ли справочное руководство, указывающее на это? – ron

+0

nevermind Я думаю, что нашел это: http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html. В примере есть раздел, который указывает на конфигурацию activemq, но не уверен, насколько он завершен. – ron

ответ

5

Проблема решена, так как метод настройки пружины подразумевает, что это ретранслятор мачты, это должен быть протокол топа.

Также префикс транспортного протокола, по-видимому, не требуется. Мне также нужно ввести имя пользователя и пароль, если он установлен в установленной по умолчанию установке activemq. Но это было сделано после загрузки автономного ActiveMQ, то, что я действительно ищу, является встроенным решением.

@Override 
public void configureMessageBroker(MessageBrokerRegistry registry) { 
    registry.enableStompBrokerRelay("/topic") 
     .setRelayHost("127.0.0.1") 
     .setRelayPort(61613) 
     .setClientLogin("system") 
     .setClientPasscode("password") 
    registry.setApplicationDestinationPrefixes("/app"); 

} 

ОБНОВЛЕНИЕ

В ответ на один из вышеуказанных замечаний Deinum. Я также попытался просто установив следующее в моем application.properties моего весенней загрузки приложения:

spring.activemq.broker-url=stomp://127.0.0.1:61614 
spring.activemq.user=system 
spring.activemq.password=password 

Но консоль показала никаких доказательств ActiveMQ не будучи пущены, я не мог подключиться к нему через мой Stomp конфигурацию брокера реле как указано выше. Я закончил создание класса весенней конфигурации, и теперь он работает:

//@Configuration 
public class TestBrokerConfig { 

@Bean(initMethod = "start", destroyMethod = "stop") 
public BrokerService broker() throws Exception { 
    final BrokerService broker = new BrokerService();    
    broker.addConnector("stomp://localhost:61614"); 

    broker.setPersistent(false); 
    broker.setShutdownHooks(Collections.<Runnable>singletonList(new SpringContextHook())); 
    final ManagementContext managementContext = new ManagementContext(); 
    managementContext.setCreateConnector(true); 
    broker.setManagementContext(managementContext); 

    return broker; 
} 
} 
+0

У меня было решение, использующее брандмауэр брокер, который вы определили внизу, но я могу подключиться к нему без учетных данных из клиентского приложения, указывающего на этого брокера. Я пытаюсь выяснить, как выставить загрузочную вставку activeemq, но у вас есть имя пользователя и пароль (и, в конечном счете, SSL, но это следующий шаг). – aradil

Смежные вопросы