Last active
April 2, 2017 15:23
-
-
Save ndemengel/867bc3bea7957b067d1a184bda2512aa to your computer and use it in GitHub Desktop.
RabbitMQ/Spring migration - Step 1: Less boilerplate
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@PostConstruct | |
public void createExchangesAndQueuesAndBindings() { | |
// only one line left for each exchange/queues association! | |
createAndBindQueuesToFanoutExchangeAndDeadLetter(EMAIL_UPDATED_EXCHANGE, MAILCHIMP_EMAIL_UPDATED_QUEUE); | |
// ... other associations... | |
} | |
private void createAndBindQueuesToFanoutExchangeAndDeadLetter(String exchangeName, String... queueNames) { | |
FanoutExchange exchangeBean = createExchangeBean(exchangeName); | |
for (String queueName : queueNames) { | |
Queue queue = queueWithDelayedRetry(queueName); | |
Binding bindingToExchange = BindingBuilder.bind(queue).to(exchangeBean); | |
Binding bindingToDeadLetter = BindingBuilder.bind(queue).to(backFromTheDeadExchange()).with(queueName); | |
String beanPrefix = queueName.replace(".", "").replace("queue", ""); | |
beanRegistry.registerSingleton(beanPrefix + "Queue", queue); | |
beanRegistry.registerSingleton(beanPrefix + "ExchangeBinding", bindingToExchange); | |
beanRegistry.registerSingleton(beanPrefix + "DeadLetterBinding", bindingToDeadLetter); | |
} | |
} | |
private FanoutExchange createExchangeBean(String exchangeName) { | |
FanoutExchange bean = new FanoutExchange(exchangeName); | |
String beanPrefix = exchangeName.replace(".", "").replace("exchange", ""); | |
beanRegistry.registerSingleton(beanPrefix + "Exchange", bean); | |
return bean; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment