Memandangkan perniagaan moden semakin bergantung pada pelbagai aplikasi dan sistem yang berbeza, integrasi perusahaan menjadi lebih penting. Bas Perkhidmatan Perusahaan (ESB) ialah model seni bina integrasi yang menghubungkan sistem dan aplikasi yang berbeza bersama-sama untuk menyediakan pertukaran data biasa dan perkhidmatan penghalaan mesej untuk mencapai penyepaduan aplikasi peringkat perusahaan. Menggunakan Spring Boot dan Apache ServiceMix, kami boleh membina sistem ESB dengan mudah Artikel ini akan memperkenalkan cara melaksanakannya.
Spring Boot ialah rangka kerja untuk mencipta kendiri, aplikasi berasaskan Java peringkat pengeluaran berdasarkan rangka kerja Spring. Ia memudahkan proses membina dan mengkonfigurasi aplikasi Spring dengan menyediakan beberapa konfigurasi dan pratetap biasa di luar kotak. Spring Boot juga menyediakan banyak ciri lain, seperti konfigurasi automatik, pelayan web terbenam, dan sokongan untuk pelbagai perkhidmatan luaran, yang boleh digunakan untuk mencipta pelbagai jenis aplikasi, termasuk aplikasi web, aplikasi kelompok dan perkhidmatan mikro.
Apache ServiceMix ialah bas perkhidmatan perusahaan (ESB) berasaskan Java sumber terbuka, yang menyediakan satu siri perkhidmatan asas, termasuk penghalaan mesej, transformasi mesej, penyebaran transaksi dan keselamatan . ServiceMix juga menyokong banyak standard bas perkhidmatan yang berbeza, seperti perkhidmatan web dan Java Message Service (JMS). Menggunakan ServiceMix dan komponen luarannya, pembangun boleh dengan mudah menyepadukan sistem dan aplikasi yang berbeza untuk penghalaan mesej dan pertukaran data yang cekap.
Untuk membina sistem ESB menggunakan Spring Boot dan ServiceMix, kita perlu melengkapkan langkah berikut terlebih dahulu:
Seterusnya, kami akan melaksanakan bahagian berlainan sistem ESB langkah demi langkah.
Bahagian teras sistem ESB ialah format mesej. Dalam contoh ini, kami akan menggunakan format JSON yang ringkas sebagai format mesej, yang termasuk medan berikut:
Seterusnya, kita perlu menentukan konfigurasi asas untuk ServiceMix. Untuk melakukan ini, cipta fail dipanggil "esb.xml" dan tambah kandungan berikut:
<?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>
Fail konfigurasi ini mentakrifkan laluan Camel yang menerima mesej daripada baris gilir JMS bernama "masuk" dan Hantarnya ke JMS baris gilir bernama "keluar". Fail konfigurasi juga mentakrifkan kilang sambungan JMS untuk menyambung ke ActiveMQ, serta kilang sambungan terkumpul, yang membenarkan penggunaan maksimum sambungan JMS dan komponen JMS untuk menyepadukan Camel dan JMS bersama-sama.
Untuk menerima dan menghantar mesej ESB, kita perlu mencipta titik akhir REST untuk sistem perniagaan. Dalam artikel ini, kami akan melaksanakan dua titik akhir berikut:
Untuk melaksanakan titik akhir ini, buat pengawal Spring Boot bernama "EsbController.java" dan tambahkan yang berikut pada kod sumbernya:
@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); } }
Kawalan ini Kelas kontena menggunakan JmsTemplate untuk menukar Mesej JSON daripada sistem perniagaan ke dalam mesej JMS dan menghantarnya ke baris gilir ESB. Juga gunakan JmsTemplate untuk mendapatkan semula mesej JSON yang diproses daripada baris gilir ESB.
Selepas melengkapkan langkah di atas, kami telah membina infrastruktur sistem ESB. Untuk menjalankan dan mengujinya secara setempat, kita perlu melakukan langkah berikut:
Menggunakan Spring Boot dan Apache ServiceMix, kami boleh membina sistem ESB yang cekap dengan mudah untuk menyambungkan berbilang sistem dan aplikasi, serta melaksanakan pertukaran data dan penghalaan pemesejan. Dalam artikel ini, kami telah melihat cara untuk menyediakan sistem ESB asas dan menambah titik akhir REST untuk memudahkan komunikasi dengan sistem perniagaan. Walaupun artikel ini hanyalah contoh mudah, ia menyediakan titik permulaan yang baik untuk membina sistem ESB yang lebih kompleks.
Atas ialah kandungan terperinci Bina sistem ESB menggunakan Spring Boot dan Apache ServiceMix. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!