Java में RabbitMQ का सबसे सरल कतार मोड एक प्रोड्यूसर और एक कंस्यूमर से मिलता है।
वर्तमान में, जावा संचालन में RabbitMQ का प्रयोग मुख्य रूप से स्प्रिंग बूट के spring-boot-starter-amqp
पैकेज का उपयोग करता है, जो सार्वजनिक रूप से कतार को संचालित करने के लिए स्प्रिंग AMQP का उपयोग है।
1. पूर्वापेक्षा ट्यूटोरियल
कृपया निम्न अध्यायों को पढ़ें ताकि संबंधित ज्ञान को समझ सकें:
2. निर्भरता पैकेज
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
3. RabbitMQ कॉन्फ़िगर करें
application.yml
कॉन्फ़िगरेशन को संशोधित करें:
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
4. कतार घोषित करें
Spring Boot कॉन्फ़िगरेशन क्लास के माध्यम से कतार को कॉन्फ़िगर करें:
package com.tizi365.rabbitmq.config;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class QueueConfig {
@Bean
public Queue helloQueue() {
// कतार को घोषित करें, और कतार का नाम अद्वितीय होना चाहिए
return new Queue("hello");
}
}
टिप: व्यापारिक आवश्यकताओं के आधार पर आप कई क्यू निर्धारित कर सकते हैं। कतार का नाम और कतार की id केवल अलग होना चाहिए। यहां, उपयोगकर्ता नाम बीन id है।
5. संदेश भेजें
संदेश भेजने के लिए RabbitTemplate क्लास की आवश्यकता होती है, जो कि स्प्रिंग बूट ने पहले से ही हमारे लिए आरंभ कर दिया है। बस उद्धरण दें:
package com.tizi365.rabbitmq.service;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@Service
public class SendService {
// रैबिटटेम्पलेट इंस्टेंस डालें
@Autowired
private RabbitTemplate template;
// पहले से निर्धारित कतार लागू करें
@Autowired
@Qualifier("helloQueue")
private Queue helloQueue;
// प्रदर्शन के लिए, हम यहां संस्थागत रैबिट कार्य का उपयोग करते हैं ताकि नियमित अंतराल से संदेश भेज सकें (प्रति सेकंड एक संदेश)
@Scheduled(fixedDelay = 1000, initialDelay = 1000)
public void send() {
// संदेश सामग्री
String message = "नमस्ते दुनिया!";
// संदेश भेजें
// पहला पैरामीटर रूटिंग कुंजी है, यहां हम कतार का नाम रूटिंग कुंजी के रूप में उपयोग करते हैं
// दूसरा पैरामीटर संदेश सामग्री है, जो केवल उसकी सीरीयलाइज़ेशन को समर्थन करता है
template.convertAndSend(helloQueue.getName(), message);
System.out.println("संदेश भेज रहा हूँ '" + message + "'");
}
}
टिप: यहां, हम सीधे एक्सचेंज का उपयोग नहीं कर रहे हैं। पाठक एक्सचेंज (सीधा एक्सचेंज) का उपयोग किया जाएगा।
6. संदेश प्राप्त करें
उपभोक्ता को संदेश प्राप्त करना भी सरल है:
package com.tizi365.rabbitmq.listener;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
// संदेश सुनने वाले को घोषित करें, `queues` पैरामीटर के माध्यम से आगे देखने के लिए कतार की घोषणा करें, जो पिछले कतार के नाम के साथ संगत होना चाहिए
@RabbitListener(queues = "hello")
public class HelloListener {
// संदेश हैंडलर को चिन्हित करने के लिए RabbitHandler का उपयोग करें, संदेश प्रसंस्करण तर्क को निष्पादित करने के लिए उपयोग किया जाता है
@RabbitHandler
public void receive(String msg) {
System.out.println("उपभोक्ता - संदेश प्राप्त हुआ '" + msg + "'");
}
}
7. अनुकूलित संदेश प्रकार
पहले, हमने एक स्ट्रिंग प्रकार का संदेश भेजा था। वास्तविक व्यापार निर्देशिका में, हम सीधे विभिन्न अनुकूलित जावा ऑब्जेक्ट प्रकार को सीधे भेजना पसंद करेंगे।
एक एंटिटी ऑब्जेक्ट की परिभाषा
package com.tizi365.rabbitmq.domain;
import java.io.Serializable;
import lombok.Data;
// ब्लॉग सामग्री
@Data
public class Blog implements Serializable {
// आईडी
private integer id;
// शीर्षक
private String title;
}
अनुकूलित प्रकार के संदेश भेजें
Blog blog = new Blog();
blog.setId(100);
blog.setTitle("Tizi365 RabbitMQ tutorial");
// संदेश भेजें
template.convertAndSend(helloQueue.getName(), blog);
कस्टम प्रकार के संदेश प्राप्त करें
@RabbitHandler
// बस मेथड पैरामीटर को कस्टम संदेश प्रकार में बदलें
public void receive(Blog msg) {
System.out.println("उपभोक्ता - संदेश '" + msg.getTitle() + "' प्राप्त किया गया");
}
संदेश सामग्री के लिए JSON सीरियलाइज़ेशन का उपयोग करें
जब RabbitMQ जावा एंटिटी ऑब्ज