Created
September 2, 2010 18:30
-
-
Save thesurlydev/562683 to your computer and use it in GitHub Desktop.
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
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