Skip to content

Instantly share code, notes, and snippets.

@thesurlydev
Created September 2, 2010 18:30
Show Gist options
  • Save thesurlydev/562683 to your computer and use it in GitHub Desktop.
Save thesurlydev/562683 to your computer and use it in GitHub Desktop.
package spg.poly.consumer.conf;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.config.AbstractRabbitConfiguration;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.connection.SingleConnectionFactory;
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.amqp.support.converter.JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import spg.poly.consumer.handler.PolyCalcHandler;
import spg.poly.core.domain.SpgExchange;
import spg.poly.core.domain.SpgQueue;
/**
* @author witbsha Aug 13, 2010 10:56:15 AM
*/
@Configuration
@ImportResource("classpath:/polyConsumerPropertiesContext.xml")
public class ConsumerConfiguration extends AbstractRabbitConfiguration {
@Value("${poly-consumer.version}")
private String version;
@Value("${poly-consumer.concurrentConsumers}")
private int concurrentConsumers;
@Value("${poly-consumer.rabbitHost}")
private String rabbitHost;
@Value("${poly-consumer.rabbitUser}")
private String rabbitUser;
@Value("${poly-consumer.rabbitPass}")
private String rabbitPass;
private static final String DBCM_PLY_REQUEST_PREFIX = "dbcm-ply-request";
public String getVersion() {
return this.toString();
}
@Bean
public SimpleMessageListenerContainer listenerContainer() {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory());
container.setQueues(dbcmPlyRequestQueue());
container.setMessageListener(messageListenerAdapter());
container.setConcurrentConsumers(concurrentConsumers);
return container;
}
@Bean
public MessageListenerAdapter messageListenerAdapter() {
return new MessageListenerAdapter(polyCalcHandler(), jsonMessageConverter());
}
@Bean
public FanoutExchange dbcmFanoutExchange() {
return new FanoutExchange(SpgExchange.DBCM_FANOUT.getExchangeName());
}
@Bean
public DirectExchange dbcmExchange() {
return new DirectExchange(SpgExchange.DBCM.getExchangeName());
}
@Bean
public PolyCalcHandler polyCalcHandler() {
PolyCalcHandler pch = new PolyCalcHandler();
pch.setRabbitTemplate(rabbitTemplate());
return pch;
}
@Bean
public Binding dbcmPlyBinding() {
return BindingBuilder.from(dbcmPlyRequestQueue()).to(dbcmFanoutExchange());
}
@Bean
public Binding dbcmPlyReplyBinding() {
return BindingBuilder.from(dbcmPlyResponseQueue()).to(dbcmExchange()).withQueueName();
}
@Bean
public ConnectionFactory connectionFactory() {
SingleConnectionFactory connectionFactory = new SingleConnectionFactory(rabbitHost);
connectionFactory.setUsername(rabbitUser);
connectionFactory.setPassword(rabbitPass);
return connectionFactory;
}
@Override
public RabbitTemplate rabbitTemplate() {
RabbitTemplate template = new RabbitTemplate(connectionFactory());
template.setMessageConverter(jsonMessageConverter());
return template;
}
@Bean
public Queue dbcmPlyRequestQueue() {
return new UniquelyNamedQueue(DBCM_PLY_REQUEST_PREFIX);
}
@Bean
public Queue dbcmPlyResponseQueue() {
return new Queue(SpgQueue.DBCM_PLY_RESPONSE.getQueueName());
}
@Bean
public MessageConverter jsonMessageConverter() {
return new JsonMessageConverter();
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
sb.append("\nConsumerConfiguration");
sb.append("\n{version='").append(version).append('\'');
sb.append("\n, concurrentConsumers='").append(concurrentConsumers).append('\'');
sb.append("\n, rabbitHost='").append(rabbitHost).append('\'');
sb.append("\n, rabbitUser='").append(rabbitUser).append('\'');
sb.append("\n, rabbitPass='").append(rabbitPass).append('\'');
sb.append('}');
return sb.toString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment