package org.cloudfoundry.picalc.config;
import org.cloudfoundry.picalc.messaging.MasterHandler;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
import org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MasterConfiguration extends AbstractConfiguration {
@Bean
public RabbitTemplate rabbitTemplate() {
RabbitTemplate template = new RabbitTemplate(connectionFactory());
template.setMessageConverter(jsonMessageConverter());
template.setRoutingKey(QueueNames.WORK_QUEUE_NAME);
return template;
}
@Bean
public MasterHandler masterHandler() {
return new MasterHandler();
}
@Bean
public SimpleMessageListenerContainer listenerContainer() {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory());
container.setQueueNames(QueueNames.RESULT_QUEUE_NAME);
MessageListenerAdapter messageListenerAdapter = new MessageListenerAdapter(masterHandler());
messageListenerAdapter.setMessageConverter(jsonMessageConverter());
container.setMessageListener(messageListenerAdapter);
container.setConcurrentConsumers(10);
return container;
}
/* comment in if you want also to have workers in the same web app
@Bean
public SimpleMessageListenerContainer workerListenerContainer() {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory());
container.setQueueNames(QueueNames.WORK_QUEUE_NAME);
MessageListenerAdapter messageListenerAdapter = new MessageListenerAdapter(new WorkerHandler());
messageListenerAdapter.setMessageConverter(jsonMessageConverter());
container.setMessageListener(messageListenerAdapter);
container.setConcurrentConsumers(10);
return container;
}*/
}