项目代码中配置ActiveMQ的连接信息

一、背景介绍

在实际项目开发中,我需要使用ActiveMQ消息队列来接收发送消息。我是Springboot工程,因此在 application.properties 文件中配置了连接ActiveMQ的信息,如下所示

application.properties

# 生产环境 mq
spring.activemq.broker-url=tcp://10.223.94.20:61616
spring.activemq.user=admin
spring.activemq.password=admin
#spring.activemq.in-memory=true
#spring.activemq.pool.enabled=false
#使用发布/订阅模式时,下边配置需要设置成 true
spring.jms.pub-sub-domain=true

JMSConfiguration

package com.test.testmanagement.config;

import javax.jms.ConnectionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;


@Configuration
public class JMSConfiguration {

        @Value("${spring.activemq.broker-url}")
        private String url;

        @Value("${spring.activemq.user}")
        private String user;

        @Value("${spring.activemq.password}")
        private String password;

        //引入SpringBoot自己配置的连接工厂
        @Autowired
        ConnectionFactory connectionFactory;


//    //真正可以产生Connection的ConnectionFactory,即ActiveMq创建的
//        @Bean
//        public ActiveMQConnectionFactory activeMQConnectionFactory1(){
//            ActiveMQConnectionFactory activeMQConnectionFactory1 = new ActiveMQConnectionFactory();
//            activeMQConnectionFactory1.setBrokerURL(url);
//            return activeMQConnectionFactory1;
//        }
//
//        //配置Spring管理的ConnectionFactory
//        @Bean
//        public SingleConnectionFactory singleConnectionFactory(){
//            SingleConnectionFactory singleConnectionFactory = new SingleConnectionFactory(activeMQConnectionFactory1());
//            return singleConnectionFactory;
//        }

        //Spring提供的JMS模板类,用于消息发送、接收等
        @Bean
        public JmsTemplate jmsTemplate(){
            JmsTemplate jmsTemplate = new JmsTemplate();
            jmsTemplate.setConnectionFactory(connectionFactory);
            return jmsTemplate;
        }

        //这个是queue目的地,点对点的
        @Bean
        public ActiveMQQueue queueDestination(){
            System.out.println("走进new 队列的配置里");
            ActiveMQQueue activeMQQueue = new ActiveMQQueue("queue1-test");
            return activeMQQueue;
        }

        //这个是topic目的地,一对多的
        @Bean
        public ActiveMQTopic topicDestination(){
            ActiveMQTopic activeMQTopic = new ActiveMQTopic("topic-1203-test");
            return activeMQTopic;
        }

      @Bean
      public DefaultJmsListenerContainerFactory topicFactory() {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        System.out.println("设置一个默认bean");
        factory.setConnectionFactory(connectionFactory);
        //PubSubDomain代表模式, true:发布/订阅模式,即topic , false:点对点模式,即queue
        factory.setPubSubDomain(false);
        return factory;
    }

    //接口自动化使用队列,用于存放用例执行状态
    @Bean
    public DefaultJmsListenerContainerFactory topicOfInterfaceAutoFactory() {
        DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
        System.out.println("设置一个默认bean 接口自动化");
        factory.setConnectionFactory(connectionFactory);
        //PubSubDomain代表模式, true:发布/订阅模式,即topic , false:点对点模式,即queue
        factory.setPubSubDomain(true);
        return factory;
    }
}

完成上述两个文件的编写后启动工程,却发现报错啦,报错信息为SecurityException: User name [admin] or password is invalid

二、解决办法

各种百度无解后,我感觉可能是ActiveMQ自身配置影响的,因此详细了解了一下ActiveMQ安装配置过程,了解每个配置文件的作用,最终找到了问题产生的原因

2.1 ActiveMQ的credentials.properties

该文件的用户/密码是用于后台服务端连接的

activemq.username=system
activemq.password=123456
guest.password=123456

2.2 ActiveMQ的jetty-realm.properties

该文件的用户/密码是用于前台浏览器连接的

admin: admin, admin
user: 123, user

备注:
(1)第一个参数代表 用户名
(2)第二个参数代表 密码
(3)第三个参数代表 角色

综上,可以看出问题产生的原因是我把用户名/密码搞错啦,我应该使用 credentials.properties 文件中的用户名/密码

参考博客:activeMQ各种配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值