优化spring+rabbitmq配置时的问题记录

这两天刚写了spring整合rabbitmq监听mq的消费端代码。但是看wiki上大牛说:“凡是在程序中指定(Hard Coding-硬编码)所链接的Hostname或者IP以及用户密码的,只能是入门学习或者测试用途,上生产时的正规用法肯定是读取配置文件。。。。。。”所以我改成用properties文件引入。按照网上一套下来,发现启动报错:java.lang.IllegelArgumentException: could not resolve placeholder ‘rabbitmq_username’ in string value “${rabbitmq_username}”……

按照正常的网上说的配置方法。先写好rabbitmq.properties配置文件,注掉的是原来的配置:

rabbitmq.host=10.137.100.64
rabbitmq.username=ZH.TRACE
rabbitmq.password=ZH.TRACE
rabbitmq.port=5672
rabbitmq.vhost=vhost

然后修改content-rabbitmq.xml配置文件:

<context:property-placeholder location="classpath:rabbitmq.properties"/>            

  
<bean id="connectionFactory" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
        <constructor-arg value="${rabbitmq.host}"/>  
        <property name="username" value="${rabbitmq.username}"/>
        <property name="password" value="${rabbitmq.password}"/>
        <property name="port" value="${rabbitmq.port}"/>
        <property name="virtualHost" value="${rabbitmq.vhost}"/>
        <property name="channelCacheSize" value="50"/>
    bean>







然后启动报错了。

原因分析:

由于项目本身已经在文件content-biz.mxl配置数据源的时候已经用了引入资源文件的方法。这里我又在content-rabbitmq.xml文件中使用:
这个引入资源的标签导致报错。没错,spring配置中的引入资源文件的标签 #placeholder# 只能出现一次,再出现就没啥作用了。

这是content-biz.xml中引入资源文件的部分代码:

name="propertyConfiger" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="ignoreResourceNotFound" value="true"/>
    <property name="locations">
        <list>
            classpath:META-INF/app_config/init_config.properties
        list>
    property>

所以,我们可以把content-rabbitmq.xml中的 删除,【配置文件都在同一个目录下】然后在content-biz.mxl中的这个标签中加上
classpath:META-INF/app_config/rabbitmq.properties,启动就可以了。

你可能感兴趣的:(rabbitMq专栏)