当前位置: 首页 > 知识库问答 >
问题:

Spring boot Artemis嵌入式代理行为

严繁
2023-03-14

早上好,

    null

感谢您对旅游的帮助

经过深入研究,我注意到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");
            }
        };
    }

}

共有1个答案

蓝昊天
2023-03-14

您只需在Artemis配置中添加一个连接器和一个接受者。使用Spring Boot Artemis starter,Spring创建一个配置bean,用于EmbeddedJMS配置。您可以在ArtemisEmbeddedConfigurationFactory类中看到这一点,其中将为配置设置InvmAcceptorFactor。您可以编辑这个bean并通过自定义ArtemisConfigurationCustomizerbean更改Artemis行为,该bean将被Spring autoconfig吸收并应用于配置。

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()));
    }
}
 类似资料:
  • 问题内容: 我正在尝试为连接到RabbitMQ代理的Scala / Java应用程序创建集成测试。为了实现这一点,我希望有一个嵌入式经纪人讲我在每次测试之前启动和停止的AMQP。最初,我试图将ActiveMQ引入AMQP作为嵌入式代理,但是该应用程序使用RabbitMQ,因此仅使用AMQP 0.9.3版,而ActiveMQ需要AMQP 1.0版。 我可以使用其他嵌入式代理代替ActiveMQ吗?

  • 问题内容: 编辑:改写问题: 我想将ActiveMQ用作服务器和客户端应用程序之间的信使服务。 我正在尝试在服务器内设置嵌入式代理(即不是单独的进程),以处理产生的消息供我的客户使用。该队列被保留。 经纪人初始化如下: 修补之后,我最终得到了服务器部分: 客户端非常相似,看起来像这样: main方法只是在线程中启动其中的每一个,以开始生成/接收消息。 …但是我在每个线程的开头都遇到以下问题: 看来

  • 我正在尝试设置一个支持SSL的嵌入式ActiveMQ代理。 我不断得到相同的错误msg: 搜索这给出了在生成密钥存储和信任存储时可能发生故障的指示。 我试图使用这些指南生成密钥存储和信任存储,但没有成功。http://docs.oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeysto

  • 我已经嵌入了< code>activemq代理。我想使用< code > simpleAuthenticationPlugin 。我为嵌入式代理添加了依赖关系< code>activemq-jaas。我已经为< code > simpleAuthenticationPlugin 添加了设置,但它似乎试图使用我的桌面用户名或eclipse用户名进行身份验证(因为它是相同的用户名)。 以下是警告: [

  • 有什么想法吗?

  • Ruby, like fire, is a very useful friend, and a very dangerous enemy. — Mikkel Bruun 在模板中使用嵌入式 Ruby 帮助构建动态的配置文件或实现数组遍历是一种强大的方式。 然而,你也可以在配置清单中使用 inline_template 函数直接嵌入 Ruby 而不必使用分离的模板文件。 操作步骤 在 Puppet