Есть несколько различий между тем, что вы настроили, и тем, что указано в приведенной вами документации. Вы создали файл jndi.properties
, в котором в документации этого вообще нет, и вы используете Log4j 2.x, где в документации используется Log4j 1.2.x, поэтому практически все настройки приложения в документации бесполезны. Ваши потребности.
Вся конфигурация JNDI возможна через самого приложения, поэтому нет необходимости в файле jndi.properties
.
Сообщение WARN
указывает на проблему с конфигурацией вашего приложения:
WARN The JNDI InitialContextFactory class name [org.apache.activemq.jndi.ActiveMQInitialContextFactory] was provided, but there was no associated provider URL. This is likely to cause problems.
Поэтому вам необходимо настроить URL-адрес провайдера для вашего приложения.
Кроме того, вы используете https://localhost:8161
для URL-адреса провайдера в jndi.properties
, но порт 8161
по умолчанию порт HTTP , который не будет работать с клиентом OpenWire JMS, который вы пытаетесь использовать. Вы почти наверняка должны использовать порт 61616
со схемой URL tcp
.
Реализация ActiveMQ InitialContextFactory
предназначена только на стороне клиента, то есть фактически не подключается через сеть для «поиска». ресурсы на удаленном сервере. Вместо этого все ресурсы обычно настраиваются в свойствах «среды» InitialContext
. Однако существует фабрика соединений JMS по умолчанию, связанная по умолчанию с ConnectionFactory
, и префикс dynamicQueues/
может использоваться для любого имени очереди, если вы не хотите или не можете специально его настроить.
Поэтому я рекомендую исключить файл jndi.properties
и использовать следующую конфигурацию приложения:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="Main">
<Appenders>
<JMS name="jmsQueue" destinationBindingName="dynamicQueues/MyQueue"
factoryName="org.apache.activemq.jndi.ActiveMQInitialContextFactory"
factoryBindingName="ConnectionFactory" providerURL="tcp://localhost:61616">
<JsonLayout properties="true"/>
</JMS>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="jmsQueue"/>
</Root>
</Loggers>
</Configuration>