Spring 使用侦听器启动嵌入式 ActiveMQ Artemis

Spring Boot Embedded ActiveMQ Artemis with listener

我正在尝试设置几个通过 ActiveMQ Artemis 进行通信的微型应用程序(作为一些新工具的演示)。因为它只是一个演示,所以我试图让最终用户尽可能简单。因此,我走的是 Spring Boot 现在拥有的嵌入式 Artemis 支持路线。

我的这个工作很好。但是,我不知道如何让它也监听本地端口,以便其他服务也可以连接到它。

基本上我想做的是:

我已经标记了我(还)不知道如何去做的部分。

作为参考,我的application.properties目前是这样的:

server.port=8082

spring.artemis.mode=EMBEDDED
spring.artemis.host=localhost
spring.artemis.port=61616

spring.artemis.embedded.enabled=true

spring.jms.template.default-destination=my-queue-1

logging.level.org.apache.activemq.audit.base=DEBUG
logging.level.org.apache.activemq.audit.message=DEBUG

有可能使这项工作吗?还是我需要让人们 运行 改用外部 Artemis 服务?

干杯

编辑。阿耳emi弥斯不是必需的。它只需要是一些异步消息传递平台。如果它可以用 ActiveMQ Classic、RabbitMQ 或其他任何东西来完成,那很好。

默认情况下 Spring 将只允许 in-vm 连接到 ActiveMQ Artemis 的嵌入式实例。参见 ArtemisEmbeddedConfigurationFactory.

InVMAcceptorFactory 的用法

要更改此设置,您需要通过自定义 ArtemisConfigurationCustomizer bean 添加一个新的 Acceptor 到您的 Artemis 配置,例如:

import org.springframework.boot.autoconfigure.jms.artemis.ArtemisConfigurationCustomizer;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ArtemisConfig implements ArtemisConfigurationCustomizer {
   @Override
   public void customize(org.apache.activemq.artemis.core.config.Configuration configuration) {
      configuration.addAcceptorConfiguration("remote", "tcp://0.0.0.0:61616");
   }
}