春季启动Artemis嵌入式经纪人行为

路易斯·古耶

大家早,

我最近一直在努力寻找spring-boot-artemis-starter。我对它的Spring-boot支持的理解如下:

  • 设置,spring.artemis.mode=embedded并且像tomcat一样,spring-boot将实例化可通过tcp(服务器模式)访问的代理。以下命令应该成功:nc -zv localhost 61616
  • setspring.artmis.mode=native和spring-boot将仅根据spring.artemis.*属性(客户端模式)配置jms模板

客户端模式可以在我的机器上的独立artemis服务器上正常工作。不幸的是,我永远无法在服务器模式下访问tcp端口。

如果有人确认我对嵌入式模式的理解,我将不胜感激。

感谢您的旅游帮助

经过一番挖掘后,我注意到spring-boot-starter-artemis开箱即用的实现使用了org.apache.activemq.artemis.core.remoting.impl.invm.InVMAcceptorFactory受主。我想知道这是否不是根本原因(再次我绝不是专家)。但似乎有一种方法可以自定义artemis配置。因此,我尝试了以下配置,但没有任何运气:

@SpringBootApplication
public class MyBroker {

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

    @Autowired
    private ArtemisProperties artemisProperties;

    @Bean
    public ArtemisConfigurationCustomizer artemisConfigurationCustomizer() {
        return configuration -> {
            try {
               configuration.addAcceptorConfiguration("netty", "tcp://localhost:" + artemisProperties.getPort());
            } catch (Exception e) {
                throw new RuntimeException("Failed to add netty transport acceptor to artemis instance");
            }
        };
    }

}
固体荷叶边

您只需要将连接器和接受器添加到Artemis配置中。借助Spring Boot Artemis启动程序,Spring创建了一个Configuration Bean,该bean将用于EmbeddedJMS配置。您可以在ArtemisEmbeddedConfigurationFactory类中看到此InVMAcceptorFactory设置,其中将为配置设置。您可以编辑此bean并通过自定义ArtemisConfigurationCustomizerbean更改Artemis行为,该自定义bean将被Spring autoconfig吸收并应用于Configuration。

Spring Boot应用程序的示例配置类:

import org.apache.activemq.artemis.api.core.TransportConfiguration;
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyAcceptorFactory;
import org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory;
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.addConnectorConfiguration("nettyConnector", new TransportConfiguration(NettyConnectorFactory.class.getName()));
        configuration.addAcceptorConfiguration(new TransportConfiguration(NettyAcceptorFactory.class.getName()));
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章