Как отправить и получить сообщение из весенней загрузки в автономную версию JBoss Wildfly 10 Artemis Activemq? - PullRequest
0 голосов
/ 28 мая 2019

Я написал приложение Spring Boot, которое направлено на отправку и получение сообщения от JBoss Wildfly 10 ActiveMQ Artemis (ПРИМЕЧАНИЕ: не Apache ActiveMQ 5.x).Я запускаю этот код через Spring Tool Suite.

Я также настроил JBoss Wildfly 10 в своей локальной системе (на порту 8080) и запустил то же самое в standalone-full.xml профиле, чтобы создать очередь с именем TestQ в подсистемах обмена сообщениями Wildfly.

Далее я использовал JMSTemplate в коде Spring Boot для отправки и потребления сообщения в вышеупомянутой очереди со следующими вещами в 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, а не ActiveMQ Artemis, встроенного в JBoss Wildfly, который требуется.

Iиметь следующие 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 Ответ

1 голос
/ 28 мая 2019

Мне кажется, что свойства в application.properties предназначены для клиента ActiveMQ 5.x, а не для клиента ActiveMQ Artemis. Как сказано в документации Spring Boot :

Конфигурация Artemis контролируется свойствами внешней конфигурации в spring.artemis.*.

Кроме того, вы должны предоставить порт в Wildfly напрямую брокеру ActiveMQ Artemis, а не использовать консолидированный порт 8080, поскольку для этого необходимо установить true на *1013* в URL-адресе клиента Artemis и нет способ сделать это с помощью интеграции Spring Boot по некоторым причинам.

...