是否可以从另一个应用程序连接到 spring 引导嵌入式 ActiveMQ 实例(在单独的进程中启动)?

Is it possible to connect to spring boot embedded ActiveMQ instance from another application(started in separate process)?

我读过几本 examples 关于 spring 引导中的 jms 支持。

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

我知道我可以使用独立的活动 mq 和 use properties:

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

但是我想申请2个:

1- 发件人(从嵌入式接收器连接到 jms 并在那里发送消息)
2-receiver(向上应用和嵌入式activemq)

可能吗?

只需将一个 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>

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

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