Alors que les entreprises modernes s'appuient de plus en plus sur une variété d'applications et de systèmes disparates, l'intégration d'entreprise devient encore plus importante. Enterprise Service Bus (ESB) est un modèle d'architecture d'intégration qui connecte différents systèmes et applications entre eux pour fournir des services communs d'échange de données et de routage de messages afin de réaliser l'intégration des applications au niveau de l'entreprise. En utilisant Spring Boot et Apache ServiceMix, nous pouvons facilement créer un système ESB. Cet article explique comment l'implémenter.
Spring Boot est un framework permettant de créer des applications Java autonomes de niveau production basées sur le framework Spring. Il simplifie le processus de création et de configuration des applications Spring en fournissant des configurations et des préréglages courants prêts à l'emploi. Spring Boot fournit également de nombreuses autres fonctionnalités, telles que la configuration automatique, les serveurs Web intégrés et la prise en charge de divers services externes, qui peuvent être utilisés pour créer différents types d'applications, notamment des applications Web, des applications par lots et des microservices.
Apache ServiceMix est un bus de services d'entreprise (ESB) basé sur Java open source, qui fournit une série de services de base, notamment le routage des messages, la transformation des messages, la propagation des transactions et la sécurité. ServiceMix prend également en charge de nombreuses normes de bus de services différentes, telles que les services Web et Java Message Service (JMS). Grâce à ServiceMix et à ses composants externes, les développeurs peuvent facilement intégrer des systèmes et des applications disparates pour un routage efficace des messages et un échange de données.
Afin de créer un système ESB à l'aide de Spring Boot et ServiceMix, nous devons d'abord effectuer les étapes suivantes :
Ensuite, nous mettrons en œuvre différentes parties du système ESB étape par étape.
La partie essentielle du système ESB est le format de message. Dans cet exemple, nous utiliserons un format JSON simple comme format de message, qui comprend les champs suivants :
Ensuite, nous devons définir la configuration de base de ServiceMix. Pour ce faire, créez un fichier appelé "esb.xml" et ajoutez le contenu suivant :
<?xml version="1.0" encoding="UTF-8"?> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> <camelContext id="camel" xmlns="http://camel.apache.org/schema/blueprint"> <route> <from uri="jms:queue:incoming"/> <to uri="jms:queue:outgoing"/> </route> </camelContext> <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="tcp://localhost:61616"/> </bean> <bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"> <property name="maxConnections" value="8"/> <property name="connectionFactory" ref="jmsConnectionFactory"/> </bean> <bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration"> <property name="connectionFactory" ref="pooledConnectionFactory"/> </bean> <bean id="jms" class="org.apache.camel.component.jms.JmsComponent" lazy-init="true"> <property name="configuration" ref="jmsConfig"/> </bean> </blueprint>
Ce fichier de configuration définit une route Camel qui reçoit les messages d'une file d'attente JMS nommée "incoming" et les envoie vers une file d'attente JMS nommée "outgoing". ". Le fichier de configuration définit également une fabrique de connexions JMS pour se connecter à ActiveMQ, ainsi qu'une fabrique de connexions poolée, qui permet une utilisation maximale des connexions JMS, et un composant JMS pour intégrer Camel et JMS ensemble.
Afin de recevoir et d'envoyer des messages ESB, nous devons créer un point de terminaison REST pour le système d'entreprise. Dans cet article, nous allons implémenter les deux points de terminaison suivants :
Pour implémenter ces points de terminaison, créez un contrôleur Spring Boot nommé "EsbController.java" et ajoutez ce qui suit à son code source :
@RestController public class EsbController { private final JmsTemplate jmsTemplate; public EsbController(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate; } @PostMapping("/esb/incoming") public ResponseEntity<?> sendIncomingMessage(@RequestBody EsbMessage message) { jmsTemplate.convertAndSend("incoming", message.toMessage()); return ResponseEntity.ok().build(); } @GetMapping("/esb/outgoing") public ResponseEntity<List<EsbMessage>> getOutgoingMessages() { List<EsbMessage> messages = jmsTemplate.browse("outgoing", session -> { List<EsbMessage> result = new ArrayList<>(); Enumeration<?> enumeration = session.getEnumeration(); while (enumeration.hasMoreElements()) { Message message = (Message) enumeration.nextElement(); result.add(EsbMessage.fromMessage(message)); } return result; }); return ResponseEntity.ok(messages); } }
Cette classe de contrôleur utilise JmsTemplate pour convertir le JSON du système d'entreprise. Les messages sont convertis en messages JMS. et envoyé à la file d'attente ESB. Utilisez également JmsTemplate pour récupérer les messages JSON traités de la file d'attente ESB.
Après avoir terminé les étapes ci-dessus, nous avons construit l'infrastructure d'un système ESB. Afin de l'exécuter et de le tester localement, nous devons effectuer les étapes suivantes :
En utilisant Spring Boot et Apache ServiceMix, nous pouvons facilement créer un système ESB efficace pour connecter plusieurs systèmes et applications, et mettre en œuvre l'échange de données et le routage des messages. Dans cet article, nous avons vu comment configurer un système ESB de base et ajouté des points de terminaison REST pour faciliter la communication avec les systèmes d'entreprise. Bien que cet article ne soit qu’un exemple simple, il constitue un bon point de départ pour créer des systèmes ESB plus complexes.
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!