Attualmente sto lavorando a un progetto di implementazione di coniglio-amqp e utilizzo spring-rabbit per impostare in modo programmatico tutte le mie code, associazioni e scambi. (spring-rabbit-1.3.4 e spring-framework versioni 3.2.0)Aggiunta dinamica di nuove code, binding e scambi come bean
La dichiarazione in una classe javaconfiguration o in una configurazione basata su xml sono entrambe abbastanza statiche secondo me dichiarate. So come impostare un valore più dinamico per una coda, lo scambio o vincolante come questo (ad esempio un nome.):
@Configuration
public class serverConfiguration {
private String queueName;
...
@Bean
public Queue buildQueue() {
Queue queue = new Queue(this.queueName, false, false, true, getQueueArguments());
buildRabbitAdmin().declareQueue(queue);
return queue;
}
...
}
Ma mi chiedevo se fosse possibile creare un indefinito istanze quantità di coda e registrarli come fagioli come una fabbrica registrando tutte le sue istanze.
Io non sono molto familiare con la Primavera di annotazione @Bean ed i suoi limiti, ma ho provato
@Configuration
public class serverConfiguration {
private String queueName;
...
@Bean
@Scope("prototype")
public Queue buildQueue() {
Queue queue = new Queue(this.queueName, false, false, true, getQueueArguments());
buildRabbitAdmin().declareQueue(queue);
return queue;
}
...
}
E per vedere se sono registrate le istanze multiple fagioli di coda che io chiamo:
Map<String, Queue> queueBeans = ((ListableBeanFactory) applicationContext).getBeansOfType(Queue.class);
Ma questo restituisce solo 1 mappatura:
name of the method := the last created instance.
E 'possibile Dynamica aggiungere i bean durante il runtime a SpringApplicationContext?
Sembra un compito JMX. – chrylis