Rumah  >  Artikel  >  Java  >  Bina sistem ESB menggunakan Spring Boot dan Apache ServiceMix

Bina sistem ESB menggunakan Spring Boot dan Apache ServiceMix

WBOY
WBOYasal
2023-06-22 12:30:102348semak imbas

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.

Pengenalan kepada Spring Boot dan Apache ServiceMix

Spring Boot

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

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.

Bina sistem ESB menggunakan Spring Boot dan ServiceMix

Untuk membina sistem ESB menggunakan Spring Boot dan ServiceMix, kita perlu melengkapkan langkah berikut terlebih dahulu:

  1. Pasang dan konfigurasikan persekitaran Java.
  2. Muat turun dan pasang Apache Maven dan Apache ServiceMix.
  3. Buat projek Spring Boot bernama "esb-demo".

Seterusnya, kami akan melaksanakan bahagian berlainan sistem ESB langkah demi langkah.

Tentukan format mesej sistem ESB

Bahagian teras sistem ESB ialah format mesej. Dalam contoh ini, kami akan menggunakan format JSON yang ringkas sebagai format mesej, yang termasuk medan berikut:

  • id: Pengecam unik mesej.
  • sumber: Sumber.
  • destinasi: destinasi mesej.
  • kandungan: kandungan mesej.

Buat konfigurasi asas ServiceMix

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.

Tambah titik akhir REST untuk sistem ESB

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:

  • POST /esb/incoming: Terima mesej ESB daripada sistem perniagaan.
  • DAPATKAN /esb/outgoing: Mengembalikan mesej ESB yang diproses.

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.

Mulakan sistem ESB

Selepas melengkapkan langkah di atas, kami telah membina infrastruktur sistem ESB. Untuk menjalankan dan mengujinya secara setempat, kita perlu melakukan langkah berikut:

  1. Tukar kepada direktori akar projek.
  2. Jalankan arahan "mvn clean install" dalam terminal untuk menjana fail JAR projek.
  3. Mulakan Apache ServiceMix dan jalankan "bin/servicemix".
  4. Pasang fail konfigurasi ESB dalam konsol baris arahan ServiceMix dan masukkan "install esb.xml".
  5. Pasang projek ESB dalam konsol baris arahan ServiceMix, masukkan "install -s mvn:com.example/esb-demo/0.0.1-SNAPSHOT".
  6. Gunakan permintaan POST untuk menghantar mesej ESB, contohnya: "curl -X POST -H "Content-Type:application/json" -d '{"id":1,"source":"SystemA" ," destination":"SystemB","content":"test message"}' http://localhost:8080/esb/incoming".
  7. Dapatkan semula mesej ESB yang diproses menggunakan permintaan GET, contohnya: "curl http://localhost:8080/esb/outgoing".

Ringkasan

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn