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,
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.

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, [
{description, "EMQX Enterprise MongoDB Bridge"},
{vsn, "0.1.0"},
{vsn, "0.2.0"},
{registered, []},
{applications, [kernel, stdlib]},
{applications, [kernel,
stdlib,
emqx_connector,
emqx_resource,
emqx_bridge,
emqx_ee_bridge,
mongodb]},
{env, []},
{modules, []},
{links, []}

View File

@ -1,7 +1,7 @@
%%--------------------------------------------------------------------
%% 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("hocon/include/hoconsc.hrl").

View File

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

View File

@ -2,7 +2,7 @@
%% 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(export_all).

View File

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

View File

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

View File

@ -1,4 +1,4 @@
emqx_ee_bridge_mongodb {
emqx_bridge_mongodb {
collection.desc:
"""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:
"""有效载荷模板"""
}