Spa*_*tan 3 spring-jms spring-boot microservices activemq-artemis jboss-eap-7
当我尝试连接到 JBoss EAP 7.1 上部署的 ActiveMQ Artemis Queue 时,出现以下错误。
错误:DefaultMessageListenerContainer:无法刷新目标“jms/queue/QueueA”的 JMS 连接 - 使用 FixBackOff{interval=5000、currentAttempts=139、maxAttempts=unlimited} 重试。原因:AMQ119031:无法验证用户
这是我正在使用的代码:
@Bean public DefaultMessageListenerContainer myFactory() throws NamingException {
DefaultMessageListenerContainer listenerContainer = new DefaultMessageListenerContainer();
listenerContainer.setConnectionFactory(getConnectionFactory());
listenerContainer.setDestinationName("jms/queue/QueueA");
listenerContainer.setMessageListener(new MessageReceiver());
return listenerContainer;
}
private ConnectionFactory getConnectionFactory() throws NamingException {
final Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, org.wildfly.naming.client.WildFlyInitialContextFactory);
env.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
env.put(Context.SECURITY_PRINCIPAL, "Username");
env.put(Context.SECURITY_CREDENTIALS, "Password");
InitialContext ic = new InitialContext(env);
return (ConnectionFactory) ic.lookup("jms/RemoteConnectionFactory");
}
Run Code Online (Sandbox Code Playgroud)
正如错误消息(即AMQ119031: Unable to validate user
)所示,您在创建 JMS 连接时没有提供正确的凭据。
您在 JNDI 查找属性中提供的用户名和密码信息仅适用于 JNDI 查找(即不适用于 JMS 连接)。JNDI 和 JMS 彼此 100% 独立。
您必须使用 JMS 用户名和密码配置适当的 Spring 组件,以便在调用javax.jms.ConnectionFactory.createConnection(String,String)或javax.jms.ConnectionFactory.createContext(String,String)时可以使用它。UserCredentialsConnectionFactoryAdapter
尝试从您的方法返回一个实例getConnectionFactory()
。
归档时间: |
|
查看次数: |
8251 次 |
最近记录: |