Невозможно прочитать сообщения из очереди HornetQ в приложении Springboot - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь настроить потребителя с помощью Springboot, но получаю трудности.Я видел пример конфигурации установки JMS Consumer и сделал то же самое, но почему-то потребитель не настраивается должным образом, и в Jconsole Queue отображается 0 потребителей.Вот мои настройки весенней загрузки:

@Configuration
@EnableJms
@EnableAutoConfiguration
public class MongoConfiguration {
@Bean
    public ConnectionFactory connectionFactory() {
        final Map<String, Object> properties = new HashMap<>();
        properties.put("host", tcpServerURL);
        properties.put("port", tcpServerPort);
        final org.hornetq.api.core.TransportConfiguration configuration =
                new org.hornetq.api.core.TransportConfiguration("org.hornetq.core.remoting.impl.netty.NettyConnectorFactory", properties);
        return new org.hornetq.jms.client.HornetQJMSConnectionFactory(false, configuration);
    }

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

        return factory;
    }
}

слушатель с назначением очереди

  @Component
    public class TrackerJmsListener {
        @JmsListener(destination = "trackerRec",containerFactory = "myFactory")
        public void handleMessage(String message) {//implicit message type conversion
            System.out.println("received: " + message);
        }
    }

Вот jconsole локального запуска hornetq Mbean enter image description here

Я сбит с толку, поскольку на консоли не отображается ошибка, и потребитель ничего не читает.Если я меняю порт jms или имя очереди, то после запуска приложения springboot я вижу сообщение об ошибке на консоли, поэтому моя базовая конфигурация кажется правильной.

Базовая настройка hornetq на сервере.

hornetq-configuration.xml

<?xml version="1.0"?>
<configuration xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hornetq">
    <connectors>
        <connector name="netty-connector">
            <factory-class>org.hornetq.integration.transports.netty.NettyConnectorFactory
            </factory-class>
        </connector>
    </connectors>
    <acceptors>
        <acceptor name="netty-acceptor">
            <factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory
            </factory-class>
        </acceptor>
    </acceptors>
    <security-enabled>false</security-enabled>
</configuration>

hornetq-jms.xml

<?xml version="1.0"?>
<configuration xsi:schemaLocation="urn:hornetq /schema/hornetq-jms.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hornetq">
    <!--the connection factory used by the example -->
    <connection-factory name="ConnectionFactory">
        <connectors>
            <connector-ref connector-name="netty-connector" />
        </connectors>
        <entries>
            <entry name="ConnectionFactory" />
        </entries>
        <consumer-window-size>0</consumer-window-size>
        <connection-ttl>-1</connection-ttl>
    </connection-factory>
    <queue name="trackerRec">
        <entry name="trackerRec" />
    </queue>
</configuration>

1 Ответ

0 голосов
/ 07 декабря 2018

На снимке экрана JConsole показаны атрибуты для очереди trackerRec core .Однако это не основная очередь, которая соответствует очереди trackerRec JMS, которую будет использовать ваше приложение.Вам нужно взглянуть на базовую очередь jms.queue.trackerRec или посмотреть очередь JMS trackerRec в дереве JMS.

Также стоит отметить, что кодовая база HornetQ была передана Apache ActiveMQ.проект более трех лет назад, и эта кодовая база действует как брокер Apache ActiveMQ Artemis настоятельно рекомендую вам перейти от HornetQ к ActiveMQ Artemis.Со времени последнего выпуска HornetQ появилось множество улучшений, новых функций, исправлений ошибок и т. Д.Кроме того, начиная с ActiveMQ Artemis 2.0 больше не существует произвольного разделения между основными адресами и очередями и JMS-очередями и темами.Модель адресации более интуитивная и мощная.

...