MessageDrivenBean не удается подтвердить пользователя на удаленном сервере

#java #jms #wildfly

#java #jms #wildfly

Вопрос:

Я пытаюсь прослушать очередь JMS на удаленном сервере Wildfly. Я успешно подключился к удаленному серверу для отправки сообщения с тем же пользователем, но при настройке моего MessageDrivenBean я получаю сообщение об ошибке.

 @MessageDriven(name = "MessageListenerBean", activationConfig = {
        @ActivationConfigProperty(propertyName = "user", propertyValue = "username"),
        @ActivationConfigProperty(propertyName = "password", propertyValue = "p@ssw0rd!"),
        @ActivationConfigProperty(propertyName = "useJNDI", propertyValue = "false"),
        @ActivationConfigProperty(propertyName = "destination", propertyValue = "/queue/receive"),
        @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
        @ActivationConfigProperty(propertyName="connectionParameters", propertyValue = "host=localhost;port=8080")})
public class MessageListenerBean implements MessageListener {
  

Ошибка

 AMQ222216: Security problem while creating session: 
AMQ119031: Unable to validate user from invm:0. 
Username: username; SSL certificate subject DN: unavailable
  

Я предполагаю, что моя конфигурация неверна, но как?

Ответ №1:

Вам необходимо указать правильный connectorClassName в вашей конфигурации активации. По умолчанию используется значение org.apache.activemq.artemis.core.remoting.impl.invm.InVMConnectorFactory , поэтому он использует соединитель invm с локальным брокером. Используйте это:

 @ActivationConfigProperty(propertyName="connectorClassName", propertyValue = "org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnectorFactory")