116 Star 700 Fork 166

GVPiresty / Apache APISIX

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
dubbo-proxy.md 4.27 KB
一键复制 编辑 原始数据 按行查看 历史
kwanhur 提交于 2022-03-13 19:49 . docs: unify plugin Description (#6532)
title
dubbo-proxy

Description

dubbo-proxy plugin allows you proxy HTTP request to dubbo.

Requirement

If you are using OpenResty, you need to build it with dubbo support, see how to build

Runtime Attributes

Name Type Requirement Default Valid Description
service_name string required dubbo provider service name
service_version string required dubbo provider service version
method string optional the path of uri dubbo provider service method

Static Attributes

Name Type Requirement Default Valid Description
upstream_multiplex_count number required 32 >= 1 the maximum number of multiplex requests in an upstream connection

How To Enable

First of all, enable the dubbo-proxy plugin in the config.yaml:

# Add this in config.yaml
plugins:
  - ... # plugin you need
  - dubbo-proxy

Then reload APISIX.

Here's an example, enable the dubbo-proxy plugin on the specified route:

curl http://127.0.0.1:9080/apisix/admin/upstreams/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "nodes": {
        "127.0.0.1:20880": 1
    },
    "type": "roundrobin"
}'

curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "uris": [
        "/hello"
    ],
    "plugins": {
        "dubbo-proxy": {
            "service_name": "org.apache.dubbo.sample.tengine.DemoService",
            "service_version": "0.0.0",
            "method": "tengineDubbo"
        }
    },
    "upstream_id": 1
}'

Test Plugin

You can follow the Quick Start example in Tengine and use the configuration above to test it. They should provide the same result.

The returned data from upstream dubbo service must be a Map<String, String>.

If the returned data is

{
    "status": "200",
    "header1": "value1",
    "header2": "valu2",
    "body": "blahblah"
}

the converted HTTP response will be

HTTP/1.1 200 OK # "status" will be the status code
...
header1: value1
header2: value2
...

blahblah # "body" will be the body

Disable Plugin

When you want to disable the dubbo-proxy plugin on a route/service, it is very simple, you can delete the corresponding json configuration in the plugin configuration, no need to restart the service, it will take effect immediately:

$ curl http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
    "methods": ["GET"],
    "uris": [
        "/hello"
    ],
    "plugins": {
    },
    "upstream_id": 1
    }
}'

The dubbo-proxy plugin has been disabled now. It works for other plugins.

If you want to disable dubbo-proxy plugin totally, you need to comment out in the config.yaml:

plugins:
  - ... # plugin you need
  #- dubbo-proxy

And then reload APISIX.

Lua
1
https://gitee.com/iresty/apisix.git
git@gitee.com:iresty/apisix.git
iresty
apisix
Apache APISIX
master

搜索帮助