Junior — Middle
100
RabbitMQ кезек жүйесімен жұмыс тәжірибеңіз туралы айтыңыз
Сұралған компаниялар
AI-дан жауап
sobes.tech AI
Менің RabbitMQ-пен жұмыс тәжірибемде мен бұл кезек жүйесін микросервистер арасында асинхронды хабар алмасуды ұйымдастыру үшін қолдандым. Мысалы, бір жобада сервис тапсырмаларды кезекке жарияласа, басқа сервис оларды тұтынып, өңдеді. Бұл негізгі процестерді жүктемені азайтуға және төзімділікті арттыруға мүмкіндік берді.
Мен келесі ұғымдармен жұмыс істедім:
- exchange (алмасу) хабарламаларды бағыттау үшін,
- queue (кезек) хабарламаларды сақтау үшін,
- binding (байланыстыру) алмасу мен кезекті байланыстыру үшін.
Мен түрлі типтегі алмасушыларды қолдандым: direct, topic, fanout, оларды маршрутизацияны икемді басқару үшін. Қосылу үшін Java клиенті RabbitMQ (amqp-client) қолдандым. Сондай-ақ, хабарламалардың растамаларын (ack) орнаттым, сенімді жеткізуді қамтамасыз ету үшін.
Қарапайым тұтынушының Java мысалы:
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
channel.queueDeclare("task_queue", true, false, false, null);
DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
System.out.println("Қабылданды: " + message);
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
};
channel.basicConsume("task_queue", false, deliverCallback, consumerTag -> {});
}