From e9a95a40c739d37dc7ab042882bdcb431f139320 Mon Sep 17 00:00:00 2001 From: BrightChing Date: Fri, 15 Nov 2024 15:55:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(activemq):=20=E6=B7=BB=E5=8A=A0ActiveMQ?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E5=8F=8A=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/activemq/1.0.0/data.yml | 154 +++++++++++++++++++++++++ apps/activemq/1.0.0/docker-compose.yml | 9 ++ apps/activemq/README.md | 30 +++++ apps/activemq/data.yml | 19 +++ apps/activemq/logo.png | Bin 0 -> 10527 bytes 5 files changed, 212 insertions(+) create mode 100644 apps/activemq/1.0.0/data.yml create mode 100644 apps/activemq/1.0.0/docker-compose.yml create mode 100644 apps/activemq/README.md create mode 100644 apps/activemq/data.yml create mode 100644 apps/activemq/logo.png diff --git a/apps/activemq/1.0.0/data.yml b/apps/activemq/1.0.0/data.yml new file mode 100644 index 0000000..a01a631 --- /dev/null +++ b/apps/activemq/1.0.0/data.yml @@ -0,0 +1,154 @@ +additionalProperties: + formFields: + - default: "true" + edit: true + envKey: NACOS_AUTH_ENABLE + labelEn: Enable Authentication + labelZh: 开启鉴权 + required: true + type: select + values: + - label: 开启 + value: "true" + - label: 关闭 + value: "false" + - default: 8848 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Nacos run port + labelZh: Nacos 运行端口 + required: true + rule: paramPort + type: number + - default: 9848 + edit: true + envKey: PANEL_APP_PORT_COMMUNICATION + labelEn: Nacos communication port + labelZh: Nacos 通讯端口 + required: true + rule: paramPort + type: number + - default: "serverIdentity" + edit: true + envKey: NACOS_AUTH_IDENTITY_KEY + labelEn: Nacos auth identity key + labelZh: Nacos身份验证密钥键 + required: true + type: text + - default: "security" + edit: true + envKey: NACOS_AUTH_IDENTITY_VALUE + labelEn: Nacos auth identity value + labelZh: Nacos身份验证密钥值 + required: true + type: text + - default: "SecretKey012345678901234567890123456789012345678901234567890123456789" + edit: true + envKey: NACOS_AUTH_TOKEN + labelEn: Nacos auth token + labelZh: Nacos身份验证令牌 + required: true + type: text + - default: "mysql" + edit: true + envKey: SPRING_DATASOURCE_PLATFORM + labelEn: SPRING_DATASOURCE_PLATFORM + labelZh: Nacos使用数据库类型 + required: true + type: select + values: + - label: MYSQL + value: "mysql" + - label: SQLSERVER + value: "sqlserver" + - label: ORACLE + value: "oracle" + - label: POSTGRESQL + value: "postgresql" + - label: H2 + value: "h2" + - label: HSQL + value: "hsql" + - label: DERBY + value: "derby" + - label: DB2 + value: "db2" + - label: SQLITE + value: "sqlite" + - default: 10.2.2.12 + edit: true + envKey: MYSQL_SERVICE_HOST + labelEn: Nacos mysql host + labelZh: Nacos mysql 主机地址 + required: true + type: text + - default: 3306 + edit: true + envKey: MYSQL_SERVICE_PORT + labelEn: Nacos mysql port + labelZh: Nacos mysql 端口 + required: true + type: number + - default: "nacos" + edit: true + envKey: MYSQL_SERVICE_DB_NAME + labelEn: Nacos mysql database name + labelZh: Nacos mysql 数据库名称 + required: true + type: text + - default: "root" + edit: true + envKey: MYSQL_SERVICE_USER + labelEn: Nacos mysql username + labelZh: Nacos mysql 用户名 + required: true + type: text + - default: "123456" + edit: true + envKey: MYSQL_SERVICE_PASSWORD + labelEn: Nacos mysql password + labelZh: Nacos mysql 密码 + required: true + type: text + - default: "" + edit: true + envKey: NACOS_SERVER_IP + labelEn: IP can be specified in multi network card mode + labelZh: 多网卡模式下可以指定IP + required: false + type: text + - default: "2g" + edit: true + envKey: JVM_XMS + labelEn: JVM_XMS + labelZh: JVM_XMS + required: true + type: text + - default: "2g" + edit: true + envKey: JVM_XMX + labelEn: JVM_XMX + labelZh: JVM_XMX + required: true + type: text + - default: "1g" + edit: true + envKey: JVM_XMN + labelEn: JVM_XMN + labelZh: JVM_XMN + required: true + type: text + - default: "128m" + edit: true + envKey: JVM_MS + labelEn: JVM_MS + labelZh: JVM_MS + required: true + type: text + - default: "320m" + edit: true + envKey: JVM_MMS + labelEn: JVM_MMS + labelZh: JVM_MMS + required: true + type: text diff --git a/apps/activemq/1.0.0/docker-compose.yml b/apps/activemq/1.0.0/docker-compose.yml new file mode 100644 index 0000000..109d279 --- /dev/null +++ b/apps/activemq/1.0.0/docker-compose.yml @@ -0,0 +1,9 @@ +version: '3.8' # 你可以根据需要使用不同的版本 +services: + activeMQ: + image: apache/activemq-classic + container_name: activeMQ + ports: + - "61616:61616" + - "8161:8161" + restart: unless-stopped diff --git a/apps/activemq/README.md b/apps/activemq/README.md new file mode 100644 index 0000000..1d8a591 --- /dev/null +++ b/apps/activemq/README.md @@ -0,0 +1,30 @@ +# 使用说明 + +## 服务地址 + +- 访问地址:`http://IP:8848/nacos` +- 用户名:`nacos` +- 密码:`nacos` + +## 参数调优 + +```shell +- JVM_XMS=64m # -Xms default :2g +- JVM_XMX=64m # -Xmx default :2g +- JVM_XMN=16m # -Xmn default :1g +- JVM_MS=8m # -XX:MetaspaceSize default :128m +- JVM_MMS=8m # -XX:MaxMetaspaceSize default :320m +``` + +# Nacos + +**Nacos** 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 + +## Nacos 的关键特性 + +## 特色: + +- **易用**:动态服务发现的一站式解决方案。配置管理和动态 DNS服务。提供 20 多项开箱即用的特性,适用于面向服务的架构。轻量级的生产就绪控制台。 +- **可靠**:无缝支持 Kubernetes 和 Spring Cloud,更容易在流行的公共云(例如阿里云和 AWS)上部署和运行,支持多租户和多环境。 +- **云原生**:源自阿里巴巴集团经过时间验证的内部产品。支持具有数百万服务规模的大型场景。开源产品并提供企业级的服务级别协议(SLA)。 +- **可扩展**:支持速率限制、大规模推广计划和多区域主动-主动架构。直接或稍作扩展支持各种相关的基于互联网的使用案例。流量调度和服务治理。 \ No newline at end of file diff --git a/apps/activemq/data.yml b/apps/activemq/data.yml new file mode 100644 index 0000000..2877fec --- /dev/null +++ b/apps/activemq/data.yml @@ -0,0 +1,19 @@ +name: ActiveMQ +tags: + - 中间件 +title: 动态服务发现、配置管理和服务管理平台 +description: 动态服务发现、配置管理和服务管理平台 +additionalProperties: + key: ActiveMQ + name: ActiveMQ + tags: + - Middleware + shortDescZh: 动态服务发现、配置管理和服务管理平台 + shortDescEn: Dynamic service discovery, configuration and service management platform + type: tool + crossVersionUpdate: false + limit: 1 + recommend: 0 + website: https://nacos.io/ + github: https://github.com/alibaba/nacos + document: https://nacos.io/docs/latest/what-is-nacos/ diff --git a/apps/activemq/logo.png b/apps/activemq/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..808a32e9f9b76c65b729ee5c654a62f3d92a98c8 GIT binary patch literal 10527 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