Spring Boot ile RabbitMQ Kullanımı 2
Bu yazıda önceki yazıda RabbitMQ’ya yazdığımız verinin okunması üzerinde duracağız.
Önceki yazıya buradan ulaşabilirsiniz.
- Maven
- Spring boot 2.2.4
Maven dependency ekleyerek başlıyoruz.
1 2 3 4 5 6 7 8 |
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> |
Show me the Code
RabbitMQ listener için gerekli bean tanımlarının olduğu konfigürasyon class’ını oluşturuyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import org.springframework.amqp.rabbit.annotation.RabbitListenerConfigurer; import org.springframework.amqp.rabbit.listener.RabbitListenerEndpointRegistrar; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.converter.MappingJackson2MessageConverter; import org.springframework.messaging.handler.annotation.support.DefaultMessageHandlerMethodFactory; @Configuration public class RabbitMQListenerConfig implements RabbitListenerConfigurer { @Bean public MappingJackson2MessageConverter jackson2Converter() { return new MappingJackson2MessageConverter(); } @Bean public DefaultMessageHandlerMethodFactory myHandlerMethodFactory() { DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory(); factory.setMessageConverter(jackson2Converter()); return factory; } @Override public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) { registrar.setMessageHandlerMethodFactory(myHandlerMethodFactory()); } } |
Gerekli bean tanımlarından sonra yapmamız gereken consumer class’ı oluşturarak mesajları okumak. Burada subscribe olduğumuz queue ismini vermemiz gerekiyor.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@Component @Slf4j public class RabbitMQConsumer { @RabbitListener(queues = "${bilisimio.rabbitmq.queue}") public void recievedMessage(Blog blog) { log.info(blog.getTitle().concat(" başlıklı blog okundu.")); } } |
Not: @Slf4j Lombok kütüphanesinin annonationu ve bir Logger nesnesi oluşturur.
Consumer olarak producer’ın bilgilerini ve hangi queue’dan okuma yapamacağımızı konfigüre etmemiz gerek.
1 2 3 4 5 6 7 8 9 |
spring.rabbitmq.host=localhost spring.rabbitmq.port=5672 spring.rabbitmq.username=admin spring.rabbitmq.password=123456 bilisimio.rabbitmq.queue=bilisimio.queue |
1 2 3 4 5 |
com.bilisimio.service.RabbitMQConsumer: Spring Boot Ile GraphQL API -1 başlıklı blog okundu. |
Faydalı olması dileğiyle.