У меня возникли трудности с настройкой 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);
}
Возможно ли вообще то, чего я пытаюсь достичь?
Любая помощь будет принята с благодарностью.Заранее спасибо