ProIT: медіа для профі в IT
3 хв

Лайфхаки: Spring Boot – конфігурація RabbitMQ

author avatar ProIT NEWS

RabbitMQ – це черга повідомлень для обміну повідомленнями між різними частинами програм або між кількома програмами. І Spring Boot, і Spring AMQP забезпечують чудові можливості інтеграції з RabbitMQ у світі Java Dev.

Geeks for Geeks наводить кроки, щоб налаштувати RabbitMQ за допомогою програми Spring Boot (за допомогою Spring AMQP).

Перш ніж почати, переконайтеся, що у вас встановлено такі інструменти:

  • Java JDK (8 або вище);
  • Spring Boot;
  • RabbitMQ Server (встановлено і працює).

Поетапне впровадження

Крок 1. Створення проєкту завантаження Spring

Якщо у вас немає проєкту Spring Boot, його можна створити за допомогою spring initializr (https: //start.spring.io/). Під час створення вашого проєкту додайте залежність AMQP у pom.xml.

Крок 2. Додавання залежностей

Якщо ви використовуєте Spring Boot, вам потрібно додати наступну залежність до вашого файлу pom.xml (mvn), щоб використовувати Rabbit MQ із Spring BOOT framework, як показано нижче.

<dependencies>
    <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-amqp</artifactId>
    </dependency>
</dependencies>

Крок 3. Налаштування підключення RabbitMQ

У вашому проєкті Spring Boot ви повинні налаштувати деталі підключення RabbitMQ. Створіть файл application.properties у каталозі src/main/resources вашого проєкту і додайте такі властивості:

spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=username
spring.rabbitmq.password=password

Інший спосіб – додати файл application.yml у той самий каталог src/main/resources і додати такі властивості:

spring:
       rabbitmq:
               host:localhost
               port:5672
               username:username
               password:password
               

Замініть «Ім’я користувача» та «Пароль» обліковими даними сервера RabbitMQ.

Крок 4. Створення RabbitMQ Producer

Тепер давайте створимо RabbitMQ, який публікуватиме повідомлення на заданому обміні RabbitMQ. Ми можемо визначити простий клас так:

Java

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
  
@Component
public class RabbitMQProducer {
  
    @Autowired private RabbitTemplate rabbitTemplate;
  
    public void sendMessage(String message)
    {
        rabbitTemplate.convertAndSend(
            "exchange-name", "routing-key", message);
    }
}

У наведеному вище коді:

  • Вводимо клас RabbitTemplate, який є класом Spring AMQP, що спрощує публікацію повідомлень.
  • Метод sendMessage надсилає повідомлення на вказаний обмін із заданим ключем маршрутизації.

Крок 5. Створення RabbitMQ Consumer

Створимо RabbitMQ Consumer, який публікуватиме повідомлення для RabbitMQ Exchange.

Java

import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
  
@Component
public class RabbitMQConsumer {
  
    @RabbitListener(queues = "queue-name")
    public void receiveMessage(String message)
    {
        // Handle the received message here
        System.out.println("Received message: " + message);
    }
}

У цьому коді:

  • Ми коментуємо метод receiveMessage за допомогою @RabbitListener, щоб вказати чергу публікації повідомлень.
  • Коли повідомлення отримано, буде викликано метод receiveMessage і споживач зможе продовжити обробку отриманого повідомлення.

Крок 6. Налаштування Exchange і Queue

Щоб це працювало, нам потрібно налаштувати обмін і чергу RabbitMQ. Зробити це можна, додавши клас конфігурації:

Java

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Exchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
  
@Configuration
public class RabbitMQConfig {
  
    @Bean public Queue queue()
    {
        return new Queue("queue-name", false);
    }
  
    @Bean public Exchange exchange()
    {
        return new DirectExchange("exchange-name");
    }
  
    @Bean
    public Binding binding(Queue queue, Exchange exchange)
    {
        return BindingBuilder.bind(queue)
            .to(exchange)
            .with("routing-key")
            .noargs();
    }
}

У цьому класі конфігурації:

  • Створюємо таку функцію, щоб визначити queue-name.
  • Створюємо прямий обмін exchange-namе.
  • Прив’язуємо чергу <queue_name> та обмінюємося <exchange_name> із ключем маршрутизації routing_key.

Коли ми налаштуємо все, то зможемо почати надсилати й отримувати повідомлення за допомогою RabbitMQ у нашій програмі Spring Boot і завершимо конфігурацію RabbitMQ у застосунку для завантаження Spring за допомогою Spring AMQP.

Java

@Autowired private RabbitMQProducer rabbitMQProducer;
  
// Sending a message
rabbitMQProducer.sendMessage("connected to RabbitMQ!");

Раніше ми повідомляли, що одним із найкорисніших нововведень, які були включені до випуску Java 18, є новий Simple Web Server, що полегшує створення та налаштування HTTP файлового сервера. Також він надає API, яке розширює наявний пакет httpserver для побудови простих випадків використання.

Підписуйтеся на ProIT у Telegram, щоб не пропустити жодну публікацію!‌‌‌‌

Приєднатися до company logo
Продовжуючи, ти погоджуєшся з умовами Публічної оферти та Політикою конфіденційності.