Commit c58021d4 authored by George Novikov's avatar George Novikov

RabbitMQConfig для работы очередей и консьюмера

parent 856627d4
...@@ -29,16 +29,4 @@ public class AppConfig implements WebMvcConfigurer { ...@@ -29,16 +29,4 @@ public class AppConfig implements WebMvcConfigurer {
corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedHeader("*");
return corsConfiguration; return corsConfiguration;
} }
@Bean
public MessageConverter messageConverter(){
return new Jackson2JsonMessageConverter();
}
@Bean
public AmqpTemplate amqpTemplate(ConnectionFactory connectionFactory){
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(messageConverter());
return rabbitTemplate;
}
} }
package kz.project.printedFormsService.config;
import kz.project.printedFormsService.consumer.Consumer;
import org.springframework.amqp.core.*;
import org.springframework.amqp.rabbit.connection.CachingConnectionFactory;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
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.Jackson2JsonMessageConverter;
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;
@Configuration
public class RabbitMQConfig {
@Value("${spring.rabbitmq.host}")
private String host;
@Value("${spring.rabbitmq.port}")
private int port;
@Value("${spring.rabbitmq.username}")
private String username;
@Value("${spring.rabbitmq.password}")
private String password;
@Value("${rabbitmq.exchange}")
private String exchange;
@Value("${rabbitmq.document_queue}")
private String queueName;
@Value("${rabbitmq.document_routing_key}")
private String routingKey;
@Bean
public ConnectionFactory connectionFactory(){
CachingConnectionFactory connectionFactory = new CachingConnectionFactory();
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(username);
connectionFactory.setPassword(password);
return connectionFactory;
}
@Bean
public TopicExchange topicExchange(){
return new TopicExchange(exchange);
}
@Bean
public MessageListenerAdapter listenerAdapter(Consumer consumer, MessageConverter converter){
MessageListenerAdapter listenerAdapter = new MessageListenerAdapter(consumer, "handleMessage");
listenerAdapter.setMessageConverter(converter);
return listenerAdapter;
}
@Bean
public SimpleMessageListenerContainer messageListenerContainer(
ConnectionFactory connectionFactory,
MessageListenerAdapter listenerAdapter
){
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames(queueName);
container.setMessageListener(listenerAdapter);
return container;
}
@Bean
public MessageConverter messageConverter(){
return new Jackson2JsonMessageConverter();
}
@Bean
public Queue queue(){ return new Queue(queueName, true, false, false); }
@Bean
public Binding binding(Queue queue, TopicExchange topicExchange){
return BindingBuilder.bind(queue).to(topicExchange).with(routingKey);
}
@Bean
public AmqpTemplate amqpTemplate(ConnectionFactory connectionFactory, MessageConverter converter){
RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory);
rabbitTemplate.setMessageConverter(converter);
return rabbitTemplate;
}
@Bean
public AmqpAdmin rabbitAdmin(
ConnectionFactory connectionFactory,
TopicExchange topicExchange,
Queue queue,
Binding binding
){
AmqpAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
rabbitAdmin.declareExchange(topicExchange);
rabbitAdmin.declareQueue(queue);
rabbitAdmin.declareBinding(binding);
return rabbitAdmin;
}
}
...@@ -56,7 +56,9 @@ logging: ...@@ -56,7 +56,9 @@ logging:
max-file-size: 10GB max-file-size: 10GB
rabbitmq: rabbitmq:
exchange: ${RABBITMQ_EXCHANGE:exchange_report}
document_queue: ${RABBITMQ_DOCUMENT_QUEUE:queue_document_save} document_queue: ${RABBITMQ_DOCUMENT_QUEUE:queue_document_save}
document_routing_key: ${RABBITMQ_DOCUMENT_ROUTING_KEY:routing_key_document_save}
server: server:
port: 8081 port: 8081
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment