Ключ маршрутизации Wildfly 10 + JMS для RabbitMQ - PullRequest
0 голосов
/ 19 февраля 2019

У меня возникли трудности с настройкой Wildfly для подключения к RabbitMQ.Я прочитал руководство по API, а также руководство по jms-клиенту и столкнулся со следующими проблемами:

При использовании клиента JMS я могу успешно получить сообщение для обмена RabbitMQ (тема),но я не могу добавить ключ маршрутизации для отправки сообщения в правильную очередь.Например.в теле сообщения есть строка типа a.pvt.message - на обмене RabbitMQ я настроил 3 очереди: частную, общедоступную и общую.Ключ маршрутизации для private содержит # .pvt, public содержит # .public, а general содержит #.Моя конфигурация и код выглядят так:

<object-factory name="java:/jms/RabbitConnectionFactory" module="com.rabbitmq" class="com.rabbitmq.jms.admin.RMQObjectFactory">
                <environment>
                    <property name="className" value="javax.jms.ConnectionFactory"/>
                    <property name="username" value="guest"/>
                    <property name="password" value="guest"/>
                    <property name="virtualHost" value="/"/>
                    <property name="host" value="localhost"/>
                    <property name="port" value="5672"/>
                </environment>
            </object-factory>
            <object-factory name="java:/jms/rmq/audit" module="com.rabbitmq" class="com.rabbitmq.jms.admin.RMQObjectFactory">
                <environment>
                    <property name="className" value="javax.jms.Topic"/>
                    <property name="amqp" value="true"/>
                    <property name="amqpExchangeName" value="audit"/>
                    <property name="amqpRoutingKey" value="#"/>
                    <property name="amqpQueueName" value="#"/>
                    <property name="destinationName" value="#"/>
                </environment>
            </object-factory>

Кажется, что если я установлю здесь amqpRoutingKey, он будет только маршрутизироваться на основе этого.Мне нужно, чтобы ключ маршрутизации был таким же, как и полезная нагрузка сообщения, но я не могу понять, как это сделать.Я попытался установить StringProperty для атрибута TextMessage, но он, похоже, не работает.

try {

        connection = connectionFactory.createTopicConnection();
        TopicSession session = connection.createTopicSession(
                false, Session.AUTO_ACKNOWLEDGE);
        TopicPublisher publisher = session.createPublisher(auditTopic);


        TextMessage message = session.createTextMessage(text);
        message.setStringProperty("amqpRoutingKey", text);
        publisher.publish(message);

    } catch (Exception ex) {
        throw new RuntimeException(ex);
    }

Возможно ли вообще то, чего я пытаюсь достичь?

Любая помощь будет принята с благодарностью.Заранее спасибо

...