refactor: MongoDB bridge to use the new app structure

This commit is contained in:
Kjell Winblad 2023-05-10 16:59:41 +02:00
parent 1dfbb7ac80
commit e3199ef813
11 changed files with 91 additions and 17 deletions

View File

@ -25,7 +25,7 @@ User can create a rule and easily ingest IoT data into MongoDB by leveraging
- Several APIs are provided for bridge management, which includes create bridge, - Several APIs are provided for bridge management, which includes create bridge,
update bridge, get bridge, stop or restart bridge and list bridges etc. update bridge, get bridge, stop or restart bridge and list bridges etc.
Refer to [API Docs - Bridges](https://docs.emqx.com/en/enterprise/v5.0/admin/api-docs.html#tag/Bridges) - Refer to [API Docs - Bridges](https://docs.emqx.com/en/enterprise/v5.0/admin/api-docs.html#tag/Bridges)
for more detailed information. for more detailed information.

View File

@ -0,0 +1,2 @@
mongo
mongo_rs_sharded

View File

@ -0,0 +1,11 @@
%% -*- mode: erlang; -*-
{erl_opts, [debug_info]}.
{deps, [ {emqx_connector, {path, "../../apps/emqx_connector"}}
, {emqx_resource, {path, "../../apps/emqx_resource"}}
, {emqx_bridge, {path, "../../apps/emqx_bridge"}}
, {emqx_ee_bridge, {path, "../../lib-ee/emqx_ee_bridge"}}
]}.
{shell, [
{apps, [emqx_bridge_mongodb]}
]}.

View File

@ -1,8 +1,14 @@
{application, emqx_bridge_mongodb, [ {application, emqx_bridge_mongodb, [
{description, "EMQX Enterprise MongoDB Bridge"}, {description, "EMQX Enterprise MongoDB Bridge"},
{vsn, "0.1.0"}, {vsn, "0.2.0"},
{registered, []}, {registered, []},
{applications, [kernel, stdlib]}, {applications, [kernel,
stdlib,
emqx_connector,
emqx_resource,
emqx_bridge,
emqx_ee_bridge,
mongodb]},
{env, []}, {env, []},
{modules, []}, {modules, []},
{links, []} {links, []}

View File

@ -1,7 +1,7 @@
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved. %% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved.
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
-module(emqx_ee_bridge_mongodb). -module(emqx_bridge_mongodb).
-include_lib("typerefl/include/types.hrl"). -include_lib("typerefl/include/types.hrl").
-include_lib("hocon/include/hoconsc.hrl"). -include_lib("hocon/include/hoconsc.hrl").

View File

@ -2,7 +2,7 @@
%% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved. %% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved.
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
-module(emqx_ee_connector_mongodb). -module(emqx_bridge_mongodb_connector).
-behaviour(emqx_resource). -behaviour(emqx_resource).

View File

@ -2,7 +2,7 @@
%% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved. %% Copyright (c) 2022-2023 EMQ Technologies Co., Ltd. All Rights Reserved.
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
-module(emqx_ee_bridge_mongodb_SUITE). -module(emqx_bridge_mongodb_SUITE).
-compile(nowarn_export_all). -compile(nowarn_export_all).
-compile(export_all). -compile(export_all).

View File

@ -1,6 +1,4 @@
toxiproxy toxiproxy
mongo
mongo_rs_sharded
mysql mysql
redis redis
redis_cluster redis_cluster

View File

@ -27,9 +27,9 @@ api_schemas(Method) ->
api_ref(emqx_bridge_cassandra, <<"cassandra">>, Method), api_ref(emqx_bridge_cassandra, <<"cassandra">>, Method),
api_ref(emqx_ee_bridge_mysql, <<"mysql">>, Method), api_ref(emqx_ee_bridge_mysql, <<"mysql">>, Method),
api_ref(emqx_bridge_pgsql, <<"pgsql">>, Method), api_ref(emqx_bridge_pgsql, <<"pgsql">>, Method),
api_ref(emqx_ee_bridge_mongodb, <<"mongodb_rs">>, Method ++ "_rs"), api_ref(emqx_bridge_mongodb, Method ++ "_rs"),
api_ref(emqx_ee_bridge_mongodb, <<"mongodb_sharded">>, Method ++ "_sharded"), api_ref(emqx_bridge_mongodb, Method ++ "_sharded"),
api_ref(emqx_ee_bridge_mongodb, <<"mongodb_single">>, Method ++ "_single"), api_ref(emqx_bridge_mongodb, Method ++ "_single"),
api_ref(emqx_ee_bridge_hstreamdb, <<"hstreamdb">>, Method), api_ref(emqx_ee_bridge_hstreamdb, <<"hstreamdb">>, Method),
api_ref(emqx_bridge_influxdb, <<"influxdb_api_v1">>, Method ++ "_api_v1"), api_ref(emqx_bridge_influxdb, <<"influxdb_api_v1">>, Method ++ "_api_v1"),
api_ref(emqx_bridge_influxdb, <<"influxdb_api_v2">>, Method ++ "_api_v2"), api_ref(emqx_bridge_influxdb, <<"influxdb_api_v2">>, Method ++ "_api_v2"),
@ -57,7 +57,7 @@ schema_modules() ->
emqx_ee_bridge_hstreamdb, emqx_ee_bridge_hstreamdb,
emqx_bridge_gcp_pubsub, emqx_bridge_gcp_pubsub,
emqx_bridge_influxdb, emqx_bridge_influxdb,
emqx_ee_bridge_mongodb, emqx_bridge_mongodb,
emqx_ee_bridge_mysql, emqx_ee_bridge_mysql,
emqx_ee_bridge_redis, emqx_ee_bridge_redis,
emqx_bridge_pgsql, emqx_bridge_pgsql,
@ -96,9 +96,9 @@ resource_type(cassandra) -> emqx_bridge_cassandra_connector;
resource_type(hstreamdb) -> emqx_ee_connector_hstreamdb; resource_type(hstreamdb) -> emqx_ee_connector_hstreamdb;
resource_type(gcp_pubsub) -> emqx_bridge_gcp_pubsub_impl_producer; resource_type(gcp_pubsub) -> emqx_bridge_gcp_pubsub_impl_producer;
resource_type(gcp_pubsub_consumer) -> emqx_bridge_gcp_pubsub_impl_consumer; resource_type(gcp_pubsub_consumer) -> emqx_bridge_gcp_pubsub_impl_consumer;
resource_type(mongodb_rs) -> emqx_ee_connector_mongodb; resource_type(mongodb_rs) -> emqx_bridge_mongodb_connector;
resource_type(mongodb_sharded) -> emqx_ee_connector_mongodb; resource_type(mongodb_sharded) -> emqx_bridge_mongodb_connector;
resource_type(mongodb_single) -> emqx_ee_connector_mongodb; resource_type(mongodb_single) -> emqx_bridge_mongodb_connector;
resource_type(mysql) -> emqx_connector_mysql; resource_type(mysql) -> emqx_connector_mysql;
resource_type(influxdb_api_v1) -> emqx_bridge_influxdb_connector; resource_type(influxdb_api_v1) -> emqx_bridge_influxdb_connector;
resource_type(influxdb_api_v2) -> emqx_bridge_influxdb_connector; resource_type(influxdb_api_v2) -> emqx_bridge_influxdb_connector;
@ -203,7 +203,7 @@ mongodb_structs() ->
[ [
{Type, {Type,
mk( mk(
hoconsc:map(name, ref(emqx_ee_bridge_mongodb, Type)), hoconsc:map(name, ref(emqx_bridge_mongodb, Type)),
#{ #{
desc => <<"MongoDB Bridge Config">>, desc => <<"MongoDB Bridge Config">>,
required => false required => false

View File

@ -1,4 +1,4 @@
emqx_ee_bridge_mongodb { emqx_bridge_mongodb {
collection.desc: collection.desc:
"""The collection where data will be stored into""" """The collection where data will be stored into"""

View File

@ -0,0 +1,57 @@
emqx_bridge_mongodb {
collection.desc:
"""数据将被存储到的集合"""
collection.label:
"""将要使用的集合Collection"""
desc_config.desc:
"""为MongoDB桥配置"""
desc_config.label:
"""MongoDB桥配置"""
desc_name.desc:
"""桥接名称。"""
desc_name.label:
"""桥接名称"""
desc_type.desc:
"""桥接类型。"""
desc_type.label:
"""桥接类型"""
enable.desc:
"""启用或停用该MongoDB桥"""
enable.label:
"""启用或禁用"""
mongodb_rs_conf.desc:
"""MongoDBReplica Set配置"""
mongodb_rs_conf.label:
"""MongoDBReplica Set配置"""
mongodb_sharded_conf.desc:
"""MongoDB (Sharded)配置"""
mongodb_sharded_conf.label:
"""MongoDB (Sharded)配置"""
mongodb_single_conf.desc:
"""MongoDB独立配置"""
mongodb_single_conf.label:
"""MongoDB独立配置"""
payload_template.desc:
"""用于格式化写入 MongoDB 的消息模板。 如果未定义,规则引擎会使用 JSON 格式序列化所有的可见输入,例如 clientid, topic, payload 等。"""
payload_template.label:
"""有效载荷模板"""
}