Skip to content

Instantly share code, notes, and snippets.

@ndemengel
Last active April 2, 2017 15:23
Show Gist options
  • Save ndemengel/867bc3bea7957b067d1a184bda2512aa to your computer and use it in GitHub Desktop.
Save ndemengel/867bc3bea7957b067d1a184bda2512aa to your computer and use it in GitHub Desktop.
RabbitMQ/Spring migration - Step 1: Less boilerplate
@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