File d'attente de messages de microservices et outil de communication asynchrone implémentés en Java
Introduction :
À l'ère d'Internet d'aujourd'hui, la popularité de l'architecture de microservices est devenue un fait incontestable. Dans l'architecture des microservices, la file d'attente de messages et la communication asynchrone sont des composants clés indispensables. Cet article explique comment utiliser Java pour implémenter des files d'attente de messages de microservices et des outils de communication asynchrone, et fournit des exemples de code correspondants.
1. File d'attente de messages de microservice
1.1 Qu'est-ce qu'une file d'attente de messages ?
La file d'attente de messages est une méthode de communication découplée par application qui permet d'obtenir un couplage lâche entre l'expéditeur et le destinataire en envoyant des messages à la file d'attente. L'expéditeur n'a qu'à envoyer le message dans la file d'attente et ne se soucie pas de la manière dont le message est traité. Le destinataire peut supprimer de manière asynchrone le message de la file d'attente pour traitement.
1.2 Introduction à RabbitMQ
RabbitMQ est un système de file d'attente de messages open source qui utilise AMQP (Advanced Message Queuing Protocol) comme protocole de transmission de messages. Il présente une fiabilité élevée, une évolutivité et un mécanisme de routage flexible, et est très approprié pour créer des files d'attente de messages dans une architecture de microservices.
1.3 Utilisation de RabbitMQ
1.3.1 Ajouter des dépendances
Tout d'abord, ajoutez les dépendances RabbitMQ dans le pom du projet
Exécutez respectivement les classes Producer et Consumer, et vous verrez que les messages envoyés par le Producer sont reçus par. le Consommateur.
2. Outils de communication asynchrones
2.1 Introduction à CompletableFutureCompletableFuture est une classe d'outils introduite dans Java 8 pour le traitement des tâches asynchrones. Il peut gérer les appels asynchrones plus facilement, éviter un traitement de rappel fastidieux et améliorer considérablement l'efficacité de la programmation simultanée.
2.2.1 Création d'une tâche asynchrone
Utilisez la méthode statique supplyAsync de CompletableFuture pour créer une tâche asynchrone avec une valeur de retour.
<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.7.3</version> </dependency>2.2.2 Combinaison de plusieurs tâches asynchrones
CompletableFuture prend également en charge la combinaison de plusieurs tâches asynchrones en fonction des dépendances.
import com.rabbitmq.client.ConnectionFactory; import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel; public class Producer { private final static String QUEUE_NAME = "my_queue"; public static void main(String[] args) { try { // 创建连接工厂 ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); // 创建连接 Connection connection = factory.newConnection(); // 创建通道 Channel channel = connection.createChannel(); // 声明队列 channel.queueDeclare(QUEUE_NAME, false, false, false, null); // 发送消息 String message = "Hello, RabbitMQ!"; channel.basicPublish("", QUEUE_NAME, null, message.getBytes("UTF-8")); System.out.println("Message sent: " + message); // 关闭连接 channel.close(); connection.close(); } catch (Exception e) { e.printStackTrace(); } } }
Références :
Documentation officielle de RabbitMQ : https://www.rabbitmq.com/documentation.html
Documentation officielle de CompletetableFuture : https://docs.oracle.com/javase/8/docs/api/java / util/concurrent/CompletableFuture.html
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!