Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Configuration
- @EnableAutoConfiguration
- @PropertySource("file:${HOME}/common/config/wave-planning.properties")
- public class RabbitMQConfiguration {
- private final static String QUEUE_NAME = "orderPlanQueue";
- private static final String EXCHANGE_NAME = "orderPlanExchange";
- private static final String DL_EXCHANGE_NAME = "deadLetterExchange";
- private static final String DL_QUEUE_NAME = "deadLetterQueue";
- @Value("${rabbitmq.host:localhost}")
- private String host;
- @Value("${rabbitmq.port:5672}")
- private int port;
- @Value("${rabbitmq.user:guest}")
- private String userName;
- @Value("${rabbitmq.password:guest}")
- private String password;
- @Value("${rabbitmq.initial_backoff_interval:1000}")
- private int INITIAL_INTERVAL_IN_MILLISECONDS;
- @Value("${rabbitmq.max_backoff_interval:10000}")
- private int MAX_INTERVAL_IN_MILLISECONDS;
- @Autowired
- OrderPlanService orderPlanService;
- @Bean
- Queue queue() {
- Map<String, Object> qargs = new HashMap<String, Object>();
- qargs.put("x-dead-letter-exchange", DL_EXCHANGE_NAME);
- return new Queue(QUEUE_NAME, false, false, false, qargs);
- }
- @Bean
- TopicExchange exchange() {
- return new TopicExchange(EXCHANGE_NAME);
- }
- @Bean
- FanoutExchange deadLetterExchange() { return new FanoutExchange(DL_EXCHANGE_NAME); }
- @Bean
- Queue deadLetterQueue() { return new Queue(DL_QUEUE_NAME); }
- @Bean
- Binding deadLetterBinding(Queue deadLetterQueue, FanoutExchange deadLetterExchange) {
- return BindingBuilder.bind(deadLetterQueue).to(deadLetterExchange);
- }
- @Bean
- Binding binding(Queue queue, TopicExchange exchange) {
- return BindingBuilder.bind(queue).to(exchange).with(QUEUE_NAME);
- }
- @Bean
- public ConnectionFactory connectionFactory() {
- CachingConnectionFactory connectionFactory = new CachingConnectionFactory(host);
- connectionFactory.setPort(port);
- connectionFactory.setUsername(userName);
- connectionFactory.setPassword(password);
- return connectionFactory;
- }
- @Bean
- public MessageConverter Jackson2JsonMessageConverter() {
- return new Jackson2JsonMessageConverter();
- }
- @Bean
- public AmqpTemplate rabbitTemplate() {
- RabbitTemplate template = new RabbitTemplate(connectionFactory());
- RetryTemplate retry = new RetryTemplate();
- ExponentialBackOffPolicy policy = new ExponentialBackOffPolicy();
- policy.setInitialInterval(INITIAL_INTERVAL_IN_MILLISECONDS);
- policy.setMultiplier(2);
- policy.setMaxInterval(MAX_INTERVAL_IN_MILLISECONDS);
- retry.setBackOffPolicy(policy);
- template.setRetryTemplate(retry);
- template.setRoutingKey(QUEUE_NAME);
- template.setMessageConverter(Jackson2JsonMessageConverter());
- return template;
- }
- @Bean
- SimpleMessageListenerContainer container(ConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) {
- SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
- container.setConnectionFactory(connectionFactory);
- container.setMessageConverter(Jackson2JsonMessageConverter());
- container.setQueueNames(QUEUE_NAME);
- container.setMessageListener(listenerAdapter);
- container.setDefaultRequeueRejected(false);
- return container;
- }
- @Bean
- MessageListenerAdapter listenerAdapter() {
- return new MessageListenerAdapter(orderPlanService, "consume");
- }
- }
- @Service
- @Transactional
- public class BaseOrderPlanService implements OrderPlanService {
- ....
- @Override
- public void consume(Object object) {
- throw new IllegalArgumentException("Test");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement