如何将消息从Spring Boot推送和使用到独立的JBoss Wildfly 10 Artemis Activemq?

时间:2019-05-28 18:48:04

标签: spring-boot jboss-eap-7 activemq-artemis

我已经编写了一个Spring Boot应用程序,旨在推送和使用来自JBoss Wildfly 10 ActiveMQ Artemis的消息(注意:不是Apache ActiveMQ 5.x)。我正在通过Spring Tool Suite运行此代码。

我还在本地系统上(在8080端口上)设置了JBoss Wildfly 10,并在standalone-full.xml配置文件中运行了该程序,以便在Wildfly的消息子系统中创建名为TestQ的队列。

接下来,我在Spring Boot代码中使用JMSTemplate来推送和使用上述队列中的消息,并在application.properties中添加以下内容:

spring.activemq.username=admin
spring.activemq.username=admin
spring.activemq.broker-url=http://localhost:8080

但是,我在运行代码时遇到Could not send message错误。

您能否建议需要进行哪些更改?

我的基本目标是使用Spring Boot从此外部队列推送和使用消息。

我已经在网上尝试了替代方法,但是我得到的每个示例都是针对Apache ActiveMQ的,而不是嵌入到JBoss Wildfly中的ActiveMQ Artemis。

我有以下2个课程:

1。

@SpringBootApplication
@EnableJms
public class App  {

    @Bean
    public JmsListenerContainerFactory<?> myFactory(ConnectionFactory connectionFactory,
                                                    DefaultJmsListenerContainerFactoryConfigurer configurer) {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        configurer.configure(factory, connectionFactory);
        return factory;
    }

    public static void main(String[] args) {
        // Launch the application
        ConfigurableApplicationContext context = SpringApplication.run(App.class, args);

        JmsTemplate jmsTemplate = context.getBean(JmsTemplate.class);

        System.out.println("Sending a JMS message.");
        jmsTemplate.convertAndSend("sampleQueue", "Hello world!");
    } 
}

2。

@Component
public class ReceiveMessage {

    @JmsListener(destination = "sampleQueue")
    public void receiveMessage(String msg) {
        System.out.println("Received :" + msg);
    }
}

1 个答案:

答案 0 :(得分:1)

在我看来,application.properties中的属性是针对ActiveMQ 5.x客户端而非ActiveMQ Artemis客户端的。正如Spring Boot documentation所说:

  

Artemis配置由spring.artemis.*中的外部配置属性控制。

此外,您应该将Wildfly上的端口直接公开给ActiveMQ Artemis代理,而不要使用合并端口8080,因为这需要在Artemis上将httpUpgradeEnabled设置为true客户的URL,由于某种原因,无法使用Spring Boot集成来做到这一点。