This is an automated email from the ASF dual-hosted git repository.
liujun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-samples.git
The following commit(s) were added to refs/heads/master by this push:
new 01786ab62 add a case for dubbo-samples-gateway-apisix-dubbo (#1141)
01786ab62 is described below
commit 01786ab6241455b34af444eb9da990a10e0fc1e3
Author: MiSinG <[email protected]>
AuthorDate: Wed Apr 24 00:25:50 2024 +0800
add a case for dubbo-samples-gateway-apisix-dubbo (#1141)
---
.../dubbo-samples-gateway-apisix-dubbo/README.md | 115 ++++++++++++++++++++
.../docker-compose.yml | 118 ++++++++++++++++++++
.../pom.xml | 73 +++++++++++++
.../gateway/consumer/ConsumerApplication.java | 31 ++++++
.../dubbo/samples/gateway/consumer/Task.java | 48 +++++++++
.../src/main/resources/application.yml | 28 +++++
.../pom.xml | 38 +++++++
.../apache/dubbo/samples/api/ApisixService.java | 25 +++++
.../org/apache/dubbo/samples/api/DemoService.java | 23 ++++
.../pom.xml | 100 +++++++++++++++++
.../gateway/provider/ApisixServiceImpl.java | 43 ++++++++
.../samples/gateway/provider/DemoServiceImpl.java | 28 +++++
.../gateway/provider/ProviderApplication.java | 30 ++++++
.../src/main/resources/application.yml | 27 +++++
.../dubbo-samples-gateway-apisix-dubbo/pom.xml | 119 +++++++++++++++++++++
.../dubbo-samples-gateway-apisix/pom.xml | 50 +++++++++
2-advanced/dubbo-samples-gateway/pom.xml | 1 +
2-advanced/pom.xml | 1 +
18 files changed, 898 insertions(+)
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/README.md
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/README.md
new file mode 100644
index 000000000..fb34b3d3a
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/README.md
@@ -0,0 +1,115 @@
+# Using APISIX+Nacos to Proxy Dubbo Service
+
+### Installation
+
+You can choose any of the following ways to install APISIX:
+
+- Docker
+- Helm
+- RPM
+- DEB
+- Source Code
+
+This document uses Docker installation, which is relatively simple
+
+To install APISIX using this method, you need to install
[Docker](https://www.docker.com/) And
+
+[docker-compose](https://docs.docker.com/compose/)
+
+First, download [apisix-docker](https://github.com/apache/apisix-docker)
Warehouse.
+
+`git clone https://github.com/apache/apisix-docker.git`
+
+`cd apisix-docker/example`
+
+### Configuration
+
+Next, enable the dubbo proxy plugin in the config.yaml file
+
+`cd apisix-docker/example/apisix_conf/`
+
+```yaml
+# Add this in config.yaml
+plugins:
+ - ... # plugin you need
+ - dubbo-proxy
+```
+
+Then note that due to the need to connect to the Nacos registry, it is
necessary to modify the
+
+`cd apisix-docker/example`
+
+`vi docker-compose.yml`
+Add the following content
+
+```yaml
+ nacos:
+ image: nacos/nacos-server:v2.1.1
+ container_name: nacos-standalone
+ environment:
+ - PREFER_HOST_MODE=hostname
+ - MODE=standalone
+ ports:
+ - "8848:8848"
+ - "9848:9848"
+ networks:
+ apisix:
+```
+
+Finally, use Docker Compose to enable APISIX:
+
+`docker-compose -p docker-apisix up -d`
+
+### Access
+
+The code example can use the `dubbo-samples-gateway-apisix-dubbo` module under
the `dubbo samples gateway` module
+Create an Upstream pointing to Dubbo Provider using curl.
+
+```yaml
+curl
[http://127.0.0.1:9180/apisix/admin/upstreams/1](http://127.0.0.1:9180/apisix/admin/upstreams/1)
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+ "nodes": {
+ "10.21.32.168:20880": 1
+ },
+ "type": "roundrobin",
+ "discovery_type": "nacos"
+}'
+```
+
+Expose an HTTP route for ApisixService
+
+```yaml
+curl
[http://127.0.0.1:9180/apisix/admin/routes/1](http://127.0.0.1:9180/apisix/admin/routes/1)
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
+{
+ "uris": [
+ "/dubbo"
+ ],
+ "plugins": {
+ "dubbo-proxy": {
+ "service_name": "org.apache.dubbo.samples.api.ApisixService",
+ "service_version": "0.0.0",
+ "method": "apisixToDubbo"
+ }
+ },
+ "upstream_id": 1
+}'
+```
+
+Use the curl command to request Apache APISIX and view the returned results.
+
+```bash
+curl http://127.0.0.1:9080/dubbo -H "Host: example.org" -X POST --data
'{"name": "hello"}'
+```
+
+```bash
+dubbo success
+
+Key = accept-language, Value = zh-CN,zh;q=0.8
+Key = host, Value = 10.21.32.168:9080
+Key = connection, Value = keep-alive
+Key = accept-encoding, Value = gzip, deflate
+Key = accept, Value =
text/html,application/json,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
+Key = user-agent, Value = Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/53
+```
+
+At this point, the most basic use of the Apisix proxy dubbo service sample has
been completed
\ No newline at end of file
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/docker-compose.yml
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/docker-compose.yml
new file mode 100644
index 000000000..779faa49f
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/docker-compose.yml
@@ -0,0 +1,118 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+version: "3"
+
+services:
+ apisix:
+ image: apache/apisix:${APISIX_IMAGE_TAG:-3.9.0-debian}
+ restart: always
+ volumes:
+ - ./apisix_conf/config.yaml:/usr/local/apisix/conf/config.yaml:ro
+ depends_on:
+ - etcd
+ ##network_mode: host
+ ports:
+ - "9180:9180/tcp"
+ - "9080:9080/tcp"
+ - "9091:9091/tcp"
+ - "9443:9443/tcp"
+ - "9092:9092/tcp"
+ networks:
+ apisix:
+
+ etcd:
+ image: bitnami/etcd:3.5.11
+ restart: always
+ volumes:
+ - etcd_data:/bitnami/etcd
+ environment:
+ ETCD_ENABLE_V2: "true"
+ ALLOW_NONE_AUTHENTICATION: "yes"
+ ETCD_ADVERTISE_CLIENT_URLS: "http://etcd:2379"
+ ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379"
+ ports:
+ - "2379:2379/tcp"
+ networks:
+ apisix:
+
+
+ nacos:
+ image: nacos/nacos-server:v2.1.1
+ container_name: nacos-standalone
+ environment:
+ - PREFER_HOST_MODE=hostname
+ - MODE=standalone
+ ports:
+ - "8848:8848"
+ - "9848:9848"
+ networks:
+ apisix:
+
+ web1:
+ image: nginx:1.19.0-alpine
+ restart: always
+ volumes:
+ - ./upstream/web1.conf:/etc/nginx/nginx.conf
+ ports:
+ - "9081:80/tcp"
+ environment:
+ - NGINX_PORT=80
+ networks:
+ apisix:
+
+ web2:
+ image: nginx:1.19.0-alpine
+ restart: always
+ volumes:
+ - ./upstream/web2.conf:/etc/nginx/nginx.conf
+ ports:
+ - "9082:80/tcp"
+ environment:
+ - NGINX_PORT=80
+ networks:
+ apisix:
+
+ prometheus:
+ image: prom/prometheus:v2.25.0
+ restart: always
+ volumes:
+ - ./prometheus_conf/prometheus.yml:/etc/prometheus/prometheus.yml
+ ports:
+ - "9090:9090"
+ networks:
+ apisix:
+
+ grafana:
+ image: grafana/grafana:7.3.7
+ restart: always
+ ports:
+ - "3000:3000"
+ volumes:
+ - "./grafana_conf/provisioning:/etc/grafana/provisioning"
+ - "./grafana_conf/dashboards:/var/lib/grafana/dashboards"
+ - "./grafana_conf/config/grafana.ini:/etc/grafana/grafana.ini"
+ networks:
+ apisix:
+
+networks:
+ apisix:
+ driver: bridge
+
+volumes:
+ etcd_data:
+ driver: local
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/pom.xml
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/pom.xml
new file mode 100644
index 000000000..8fcf57393
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ ~
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-samples-gateway-apisix-dubbo</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>dubbo-samples-gateway-apisix-dubbo-consumer</artifactId>
+
+ <properties>
+ <maven.compiler.source>17</maven.compiler.source>
+ <maven.compiler.target>17</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+
+ <!-- dubbo -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-spring-boot-starter</artifactId>
+ </dependency>
+
+ <!-- spring starter -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-log4j2</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+
<artifactId>dubbo-samples-gateway-apisix-dubbo-interface</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/src/main/java/org/apache/dubbo/samples/gateway/consumer/ConsumerApplication.java
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/src/main/java/org/apache/dubbo/samples/gateway/consumer/ConsumerApplication.java
new file mode 100644
index 000000000..5cac7b9b2
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/src/main/java/org/apache/dubbo/samples/gateway/consumer/ConsumerApplication.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.samples.gateway.consumer;
+
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+
+@SpringBootApplication
+@EnableDubbo
+public class ConsumerApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(ConsumerApplication.class, args);
+ }
+}
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/src/main/java/org/apache/dubbo/samples/gateway/consumer/Task.java
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/src/main/java/org/apache/dubbo/samples/gateway/consumer/Task.java
new file mode 100644
index 000000000..aee203409
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/src/main/java/org/apache/dubbo/samples/gateway/consumer/Task.java
@@ -0,0 +1,48 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.samples.gateway.consumer;
+
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.dubbo.samples.api.DemoService;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.stereotype.Component;
+import java.util.Date;
+
+@Component
+public class Task implements CommandLineRunner {
+
+ @DubboReference
+ private DemoService demoService;
+
+ @Override
+ public void run(String... args) throws Exception {
+ String result = demoService.sayHello("world");
+ System.out.println("Receive result ======> " + result);
+
+ new Thread(()-> {
+ while (true) {
+ try {
+ Thread.sleep(1000);
+ System.out.println(new Date() + " Receive result ======> "
+ demoService.sayHello("world"));
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ Thread.currentThread().interrupt();
+ }
+ }
+ }).start();
+ }
+}
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/src/main/resources/application.yml
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/src/main/resources/application.yml
new file mode 100644
index 000000000..4ec769ba4
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-consumer/src/main/resources/application.yml
@@ -0,0 +1,28 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+server:
+ port: 8889
+dubbo:
+ application:
+ name: dubbo-gateway-consumer
+ protocol:
+ name: dubbo
+ port: 20880
+ serialization: fastjson2
+ registry:
+ address: nacos://${nacos.address:127.0.0.1}:8848
+ username: nacos
+ password: nacos
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-interface/pom.xml
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-interface/pom.xml
new file mode 100644
index 000000000..e84f205a1
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-interface/pom.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ ~
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-samples-gateway-apisix-dubbo</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>dubbo-samples-gateway-apisix-dubbo-interface</artifactId>
+
+ <properties>
+ <maven.compiler.source>17</maven.compiler.source>
+ <maven.compiler.target>17</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+</project>
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-interface/src/main/java/org/apache/dubbo/samples/api/ApisixService.java
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-interface/src/main/java/org/apache/dubbo/samples/api/ApisixService.java
new file mode 100644
index 000000000..cd71f6a11
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-interface/src/main/java/org/apache/dubbo/samples/api/ApisixService.java
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.samples.api;
+
+import java.util.Map;
+
+public interface ApisixService {
+
+ Map<String, Object> apisixToDubbo(Map<String, Object> requestBody);
+
+}
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-interface/src/main/java/org/apache/dubbo/samples/api/DemoService.java
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-interface/src/main/java/org/apache/dubbo/samples/api/DemoService.java
new file mode 100644
index 000000000..202775d89
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-interface/src/main/java/org/apache/dubbo/samples/api/DemoService.java
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.samples.api;
+
+public interface DemoService {
+
+ String sayHello(String name);
+
+}
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/pom.xml
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/pom.xml
new file mode 100644
index 000000000..1e151d569
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/pom.xml
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ ~
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-samples-gateway-apisix-dubbo</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ <relativePath>../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>dubbo-samples-gateway-apisix-dubbo-provider</artifactId>
+
+ <properties>
+ <maven.compiler.source>17</maven.compiler.source>
+ <maven.compiler.target>17</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <!-- dubbo -->
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-spring-boot-starter</artifactId>
+ </dependency>
+
+ <!-- spring starter -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-log4j2</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+
<artifactId>dubbo-samples-gateway-apisix-dubbo-interface</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-registry-nacos</artifactId>
+ <version>${dubbo-nacos.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-registry-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-common</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>com.alibaba.fastjson2</groupId>
+ <artifactId>fastjson2</artifactId>
+ <version>2.0.39</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/java/org/apache/dubbo/samples/gateway/provider/ApisixServiceImpl.java
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/java/org/apache/dubbo/samples/gateway/provider/ApisixServiceImpl.java
new file mode 100644
index 000000000..ebc5bcc0b
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/java/org/apache/dubbo/samples/gateway/provider/ApisixServiceImpl.java
@@ -0,0 +1,43 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.samples.gateway.provider;
+
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.samples.api.ApisixService;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@DubboService
+public class ApisixServiceImpl implements ApisixService {
+
+ @Override
+ public Map<String, Object> apisixToDubbo(Map<String, Object> requestBody) {
+ for (Map.Entry<String, Object> entry : requestBody.entrySet()) {
+ //Notice here that the value of the body is actually a byte array
+ System.out.println("Key = " + entry.getKey() + ", Value = " +
entry.getValue());
+ }
+
+ Map<String, Object> resp = new HashMap<>();
+ resp.put("body", "dubbo success\n"); // http response body
+ resp.put("status", "200"); // http response status
+ resp.put("author", "yang siming"); // http response header
+
+ return resp;
+ }
+
+}
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/java/org/apache/dubbo/samples/gateway/provider/DemoServiceImpl.java
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/java/org/apache/dubbo/samples/gateway/provider/DemoServiceImpl.java
new file mode 100644
index 000000000..e875f4d0d
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/java/org/apache/dubbo/samples/gateway/provider/DemoServiceImpl.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.samples.gateway.provider;
+
+import org.apache.dubbo.config.annotation.DubboService;
+import org.apache.dubbo.samples.api.DemoService;
+
+
+@DubboService
+public class DemoServiceImpl implements DemoService {
+ public String sayHello(String name) {
+ return "Hello " + name;
+ }
+}
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/java/org/apache/dubbo/samples/gateway/provider/ProviderApplication.java
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/java/org/apache/dubbo/samples/gateway/provider/ProviderApplication.java
new file mode 100644
index 000000000..6c6f9e806
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/java/org/apache/dubbo/samples/gateway/provider/ProviderApplication.java
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dubbo.samples.gateway.provider;
+
+import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+@EnableDubbo
+public class ProviderApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(ProviderApplication.class, args);
+ }
+}
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/resources/application.yml
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/resources/application.yml
new file mode 100644
index 000000000..af3290405
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/dubbo-samples-gateway-apisix-dubbo-provider/src/main/resources/application.yml
@@ -0,0 +1,27 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+server:
+ port: 8888
+dubbo:
+ application:
+ name: dubbo-gateway-provider
+ protocol:
+ name: dubbo
+ port: 20880
+ serialization: fastjson2
+ registry:
+ address: nacos://${nacos.address:127.0.0.1}:8848
+ username: nacos
+ password: nacos
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/pom.xml
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/pom.xml
new file mode 100644
index 000000000..21cd99fec
--- /dev/null
+++
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/dubbo-samples-gateway-apisix-dubbo/pom.xml
@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ ~
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-samples-gateway-apisix</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>dubbo-samples-gateway-apisix-dubbo</artifactId>
+ <name>Dubbo Samples Gateway Apisix Dubbo</name>
+ <description>Dubbo Samples Gateway Apisix Dubbo</description>
+ <packaging>pom</packaging>
+
+ <properties>
+ <maven.compiler.source>17</maven.compiler.source>
+ <maven.compiler.target>17</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <spring-boot.version>3.2.3</spring-boot.version>
+ <dubbo.version>3.3.0-beta.1</dubbo.version>
+ <dubbo-nacos.version>3.2.0</dubbo-nacos.version>
+ </properties>
+ <modules>
+ <module>dubbo-samples-gateway-apisix-dubbo-consumer</module>
+ <module>dubbo-samples-gateway-apisix-dubbo-interface</module>
+ <module>dubbo-samples-gateway-apisix-dubbo-provider</module>
+ </modules>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>${spring-boot.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter</artifactId>
+ <version>${spring-boot.version}</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>spring-boot-starter-logging</artifactId>
+ <groupId>org.springframework.boot</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-bom</artifactId>
+ <version>${dubbo.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-registry-nacos</artifactId>
+ <version>${dubbo-nacos.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-web</artifactId>
+ <version>${spring-boot.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-to-slf4j</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ </dependencyManagement>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-maven-plugin</artifactId>
+ <version>${spring-boot.version}</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>repackage</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+
+</project>
diff --git
a/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/pom.xml
b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/pom.xml
new file mode 100644
index 000000000..310af2a3d
--- /dev/null
+++ b/2-advanced/dubbo-samples-gateway/dubbo-samples-gateway-apisix/pom.xml
@@ -0,0 +1,50 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <!--
+ ~
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version
2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ ~
+ -->
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.dubbo</groupId>
+ <artifactId>dubbo-samples-gateway</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>dubbo-samples-gateway-apisix</artifactId>
+ <packaging>pom</packaging>
+ <name>Dubbo Samples Gateway Apisix</name>
+ <description>Dubbo Samples Gateway Apisix</description>
+ <modules>
+ <module>dubbo-samples-gateway-apisix-dubbo</module>
+ </modules>
+
+ <properties>
+ <maven.compiler.source>17</maven.compiler.source>
+ <maven.compiler.target>17</maven.compiler.target>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/2-advanced/dubbo-samples-gateway/pom.xml
b/2-advanced/dubbo-samples-gateway/pom.xml
index 620603c5c..0ac1c2401 100644
--- a/2-advanced/dubbo-samples-gateway/pom.xml
+++ b/2-advanced/dubbo-samples-gateway/pom.xml
@@ -31,6 +31,7 @@
<description>Dubbo Samples Gateway</description>
<modules>
+ <module>dubbo-samples-gateway-apisix</module>
<module>dubbo-samples-gateway-higress</module>
</modules>
diff --git a/2-advanced/pom.xml b/2-advanced/pom.xml
index 0439c77df..1da1ddb60 100644
--- a/2-advanced/pom.xml
+++ b/2-advanced/pom.xml
@@ -67,6 +67,7 @@
<module>dubbo-samples-api-with-registry</module>
<module>dubbo-samples-dubbo</module>
<module>dubbo-samples-triple-rest</module>
+ <module>dubbo-samples-gateway</module>
<module>dubbo-samples-multiple-protocols</module>
</modules>
</project>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]