diff --git a/apps/emqx_bridge_mongodb/README.md b/apps/emqx_bridge_mongodb/README.md index 63a541dc5..c0c552756 100644 --- a/apps/emqx_bridge_mongodb/README.md +++ b/apps/emqx_bridge_mongodb/README.md @@ -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. diff --git a/apps/emqx_bridge_mongodb/docker-ct b/apps/emqx_bridge_mongodb/docker-ct new file mode 100644 index 000000000..f350a379c --- /dev/null +++ b/apps/emqx_bridge_mongodb/docker-ct @@ -0,0 +1,2 @@ +mongo +mongo_rs_sharded diff --git a/apps/emqx_bridge_mongodb/rebar.config b/apps/emqx_bridge_mongodb/rebar.config new file mode 100644 index 000000000..42fcc1f26 --- /dev/null +++ b/apps/emqx_bridge_mongodb/rebar.config @@ -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]} +]}. diff --git a/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb.app.src b/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb.app.src index 008a9e164..3a3a0955d 100644 --- a/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb.app.src +++ b/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb.app.src @@ -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, []} diff --git a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mongodb.erl b/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb.erl similarity index 99% rename from lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mongodb.erl rename to apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb.erl index e115bbf37..694d13fa7 100644 --- a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_mongodb.erl +++ b/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb.erl @@ -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"). diff --git a/lib-ee/emqx_ee_connector/src/emqx_ee_connector_mongodb.erl b/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb_connector.erl similarity index 99% rename from lib-ee/emqx_ee_connector/src/emqx_ee_connector_mongodb.erl rename to apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb_connector.erl index 202b0fe06..b6f7e4939 100644 --- a/lib-ee/emqx_ee_connector/src/emqx_ee_connector_mongodb.erl +++ b/apps/emqx_bridge_mongodb/src/emqx_bridge_mongodb_connector.erl @@ -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). diff --git a/lib-ee/emqx_ee_bridge/test/emqx_ee_bridge_mongodb_SUITE.erl b/apps/emqx_bridge_mongodb/test/emqx_bridge_mongodb_SUITE.erl similarity index 99% rename from lib-ee/emqx_ee_bridge/test/emqx_ee_bridge_mongodb_SUITE.erl rename to apps/emqx_bridge_mongodb/test/emqx_bridge_mongodb_SUITE.erl index e21182591..5077cd174 100644 --- a/lib-ee/emqx_ee_bridge/test/emqx_ee_bridge_mongodb_SUITE.erl +++ b/apps/emqx_bridge_mongodb/test/emqx_bridge_mongodb_SUITE.erl @@ -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). diff --git a/lib-ee/emqx_ee_bridge/docker-ct b/lib-ee/emqx_ee_bridge/docker-ct index 7cbc30567..26430609e 100644 --- a/lib-ee/emqx_ee_bridge/docker-ct +++ b/lib-ee/emqx_ee_bridge/docker-ct @@ -1,6 +1,4 @@ toxiproxy -mongo -mongo_rs_sharded mysql redis redis_cluster diff --git a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.erl b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.erl index b418f9e15..6eec44388 100644 --- a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.erl +++ b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge.erl @@ -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 diff --git a/rel/i18n/emqx_ee_bridge_mongodb.hocon b/rel/i18n/emqx_bridge_mongodb.hocon similarity index 98% rename from rel/i18n/emqx_ee_bridge_mongodb.hocon rename to rel/i18n/emqx_bridge_mongodb.hocon index b703bf5a5..4edd1182d 100644 --- a/rel/i18n/emqx_ee_bridge_mongodb.hocon +++ b/rel/i18n/emqx_bridge_mongodb.hocon @@ -1,4 +1,4 @@ -emqx_ee_bridge_mongodb { +emqx_bridge_mongodb { collection.desc: """The collection where data will be stored into""" diff --git a/rel/i18n/zh/emqx_bridge_mongodb.hocon b/rel/i18n/zh/emqx_bridge_mongodb.hocon new file mode 100644 index 000000000..9a4c7d954 --- /dev/null +++ b/rel/i18n/zh/emqx_bridge_mongodb.hocon @@ -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: +"""MongoDB(Replica Set)配置""" + +mongodb_rs_conf.label: +"""MongoDB(Replica 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: +"""有效载荷模板""" + +}