2015-07-23 15 views
9

Desidero creare un file application-development.properties in primavera per definire un ambiente di sviluppo. In questo ambiente si desidera disabilitare l'ascolto delle code dei conigli perché non voglio interferire con le code di staging durante il debug ecc.Disattivazione dell'ascolto di code di coniglio da spring application.properties

Il problema è - Non riesco a trovare una proprietà che controlli questo. No proprietà "attivo" o "permesso" di proprietà o nulla ..

Queste sono le proprietà che ho trovato nel Spring docs:

# RABBIT (RabbitProperties) 
spring.rabbitmq.addresses= # connection addresses (e.g. myhost:9999,otherhost:1111) 
spring.rabbitmq.dynamic=true # create an AmqpAdmin bean 
spring.rabbitmq.host= # connection host 
spring.rabbitmq.port= # connection port 
spring.rabbitmq.password= # login password 
spring.rabbitmq.requested-heartbeat= # requested heartbeat timeout, in seconds; zero for none 
spring.rabbitmq.listener.acknowledge-mode= # acknowledge mode of container 
spring.rabbitmq.listener.concurrency= # minimum number of consumers 
spring.rabbitmq.listener.max-concurrency= # maximum number of consumers 
spring.rabbitmq.listener.prefetch= # number of messages to be handled in a single request 
spring.rabbitmq.listener.transaction-size= # number of messages to be processed in a transaction 
spring.rabbitmq.ssl.enabled=false # enable SSL support 
spring.rabbitmq.ssl.key-store= # path to the key store that holds the SSL certificate 
spring.rabbitmq.ssl.key-store-password= # password used to access the key store 
spring.rabbitmq.ssl.trust-store= # trust store that holds SSL certificates 
spring.rabbitmq.ssl.trust-store-password= # password used to access the trust store 
spring.rabbitmq.username= # login user 
spring.rabbitmq.virtual-host= # virtual host to use when connecting to the broker 

ho trovato un modo per non caricare i fagioli AMQP-context.xml che contengono le definizioni del listener utilizzando Spring profiles e aggiungono <beans profile="development"> .. </beans> all'xml ma questo è molto meno flessibile in quanto devo definire profili diversi e cambiare ciò che include implica la modifica del codice.

EDIT questo è come il mio AMQP-context.xml assomiglia:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:task="http://www.springframework.org/schema/task" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:rabbit="http://www.springframework.org/schema/rabbit" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/task 
     http://www.springframework.org/schema/task/spring-task-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/rabbit 
     http://www.springframework.org/schema/rabbit/spring-rabbit-1.3.xsd"> 

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="ignoreResourceNotFound" value="true" /> 
     <property name="locations"> 
      <list> 
       <value>application.${env:xxxx}.properties</value> 
      </list> 
     </property> 
    </bean> 
    <rabbit:connection-factory id="connectionFactory" host="${rabbit_host}" 
     virtual-host="${rabbit_virtual_host}" username="${rabbit_username}" password="${rabbit_password}" port="${rabbit_port}"/> 

    <!-- Connection Factory --> 
    <bean id="rabbitConnFactory" 
     class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory"> 
    </bean> 


    <!-- Spring AMQP Template --> 
    <bean id="template" class="org.springframework.amqp.rabbit.core.RabbitTemplate"> 
     <property name="connectionFactory" ref="connectionFactory" /> 
     <property name="routingKey" value="${my_queue}" /> 
     <property name="queue" value="${my_queue}" /> 
    </bean> 

    <!-- Spring AMQP Admin --> 
    <bean id="admin" class="org.springframework.amqp.rabbit.core.RabbitAdmin"> 
     <constructor-arg ref="rabbitConnFactory" /> 
    </bean> 

    <rabbit:listener-container connection-factory="connectionFactory" requeue-rejected="false" concurrency="10"> 
     <rabbit:listener ref="ProcessMessage" 
      queue-names="${queue_name}" /> 
    </rabbit:listener-container> 

    <bean id="ProcessStuff" class="Process" /> 



</beans> 

Qualcuno ha un'idea su come posso gestire l'ascolto alle code direttamente dal file delle application.properties? per favore?

+0

cosa il tuo amqp-context.xml è simile? – jst

+0

@jst l'ho aggiunto al contenuto della domanda – Adi

risposta

2

Buona cattura! Ho creato #3587 che sarà indirizzato per Spring Boot 1.3

Grazie!

6

In alternativa al attesa di Boot 1.3, è possibile aggiungere la tua chiave per application-development.properties come

rabbit.auto-startup=false 

quindi modificare il tuo AMQP-context.xml come questo

<rabbit:listener-container connection-factory="connectionFactory" requeue-rejected="false" concurrency="10" auto-startup=${rabbit.auto-startup}>