是否可以从另一个应用程序连接到Spring Boot嵌入式ActiveMq实例(在分离的进程中启动)?

时间:2018-01-29 15:05:35

标签: java spring-boot jms activemq spring-jms

我已经在春季启动时阅读了几个关于jms支持的examples

通常发送方,接收方和active-mq(实际上它可以是任何其他jms兼容的消息代理)位于同一个应用程序中。

我知道我可以使用独立的有效mq和use propertie s:

spring.activemq.broker-url=tcp://192.168.1.210:9876
spring.activemq.user=admin
spring.activemq.password=secret

但我想要2个申请:

1-发送者(从嵌入式接收器连接到jms并在那里发送消息)
2接收器(up application和embedded activemq)

是否可以?

2 个答案:

答案 0 :(得分:4)

只需在您的应用程序中添加BrokerService bean:

@SpringBootApplication
public class So48504265Application {

    public static void main(String[] args) {
        SpringApplication.run(So48504265Application.class, args);
    }

    @Bean
    public BrokerService broker() throws Exception {
        BrokerService broker = new BrokerService();
        broker.addConnector("tcp://localhost:61616);
        return broker;
    }

    @Bean
    public ApplicationRunner runner(JmsTemplate template) {
        return args -> template.convertAndSend("foo", "AMessage");
    }

    @JmsListener(destination = "foo")
    public void listen(String in) {
        System.out.println(in);
    }

}

spring.activemq.broker-url=tcp://localhost:61616

并将其添加到您的pom

<dependency>
    <groupId>org.apache.activemq</groupId>
    <artifactId>activemq-kahadb-store</artifactId>
</dependency>

答案 1 :(得分:0)

添加到您的配置中以本地或远程访问

@Bean
public BrokerService broker() throws Exception {
    BrokerService broker = new BrokerService();
    broker.addConnector("tcp://0.0.0.0:61616");
    brokerService.setPersistent(false);
    return broker;
}