package org.cloudfoundry.picalc.config;
import org.cloudfoundry.picalc.messaging.WorkerHandler;
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 WorkerConfiguration extends AbstractConfiguration {
@Bean
public RabbitTemplate rabbitTemplate() {
RabbitTemplate template = new RabbitTemplate(connectionFactory());
template.setMessageConverter(jsonMessageConverter());
template.setRoutingKey(QueueNames.RESULT_QUEUE_NAME);
return template;
}
@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(1);
return container;
}
}