diff --git a/dsAiSupport/Doc/21、RocketMq安装.md b/dsAiSupport/Doc/21、RocketMq安装.md
deleted file mode 100644
index 7b207252..00000000
--- a/dsAiSupport/Doc/21、RocketMq安装.md
+++ /dev/null
@@ -1,193 +0,0 @@
-**参考文档**
-
-https://blog.csdn.net/apple_74262176/article/details/141886930
-
-**1、拉取 $RocketMQ$ 镜像**
-
-```sh
-docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/rocketmq:5.3.2
-docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apache/rocketmq:5.3.2 docker.io/apache/rocketmq:5.3.2
-```
-
-**2、 创建容器共享网络 $rocketmq$**
-
-```sh
-docker network create rocketmq
-```
-
- **3、 部署 $NameServer$ 前提条件**
-
-```
-# 创建目录
-mkdir -p /data/rocketmq/nameserver/{bin,logs}
-
-# 授权文件
-chmod 777 -R /data/rocketmq/nameserver/*
-
-# 创建容器
-docker run -d \
---privileged=true --name rmqnamesrv \
-docker.io/apache/rocketmq:5.3.2 sh mqnamesrv
-
-# 拷贝启动脚本
-docker cp rmqnamesrv:/home/rocketmq/rocketmq-5.3.2/bin/runserver.sh /data/rocketmq/nameserver/bin/
-
-# 删除容器 NameServer
-docker rm -f rmqnamesrv
-```
-
-
-
-**4、启动容器** $NameServer$
-
-```
-# 启动容器 NameServer
-docker run -d --network rocketmq \
---privileged=true --restart=always \
---name rmqnamesrv -p 9876:9876 \
--v /data/rocketmq/nameserver/logs:/home/rocketmq/logs \
--v /data/rocketmq/nameserver/bin/runserver.sh:/home/rocketmq/rocketmq-5.1.0/bin/runserver.sh \
-docker.io/apache/rocketmq:5.3.2 sh mqnamesrv
-
-# 部分命令解释 :
-1. -e "MAX_HEAP_SIZE=256M" 设置最大堆内存和堆内存初始大小
-2. -e "HEAP_NEWSIZE=128M" 设置新生代内存大小
-
-# 查看启动日志
-docker logs -f rmqnamesrv
-```
-
-**5、 查看 $NameServer$ 启动日志**
-
-- **看到 ‘The Name Server boot success…’, 表示NameServer 已成功启动。**
-
-
-
-
-
-**6、部署 $Broker + Proxy$**
-
-- **创建挂载文件夹并授权**
-
- ```
- mkdir -p /data/rocketmq/broker/{store,logs,conf,bin}
- chmod 777 -R /data/rocketmq/broker/*
- ```
-
-
-
-**7、创建broker.conf文件**
-
-```
-vi /data/rocketmq/broker/conf/broker.conf
-
-# nameServer 地址多个用;隔开 默认值null
-# 例:127.0.0.1:6666;127.0.0.1:8888
-namesrvAddr = 10.10.14.14:9876
-# 集群名称
-brokerClusterName = DefaultCluster
-# 节点名称
-brokerName = broker-a
-# broker id节点ID, 0 表示 master, 其他的正整数表示 slave,不能小于0
-brokerId = 0
-# Broker服务地址 String 内部使用填内网ip,如果是需要给外部使用填公网ip
-brokerIP1 = 10.10.14.14
-# Broker角色
-brokerRole = ASYNC_MASTER
-# 刷盘方式
-flushDiskType = ASYNC_FLUSH
-# 在每天的什么时间删除已经超过文件保留时间的 commit log,默认值04
-deleteWhen = 04
-# 以小时计算的文件保留时间 默认值72小时
-fileReservedTime = 72
-# 是否允许Broker 自动创建Topic,建议线下开启,线上关闭
-autoCreateTopicEnable=true
-# 是否允许Broker自动创建订阅组,建议线下开启,线上关闭
-autoCreateSubscriptionGroup=true
-# 禁用 tsl
-tlsTestModeEnable = false
-```
-
-**8、 拷贝启动脚本**
-
-```
-# 启动 Broker 容器
-docker run -d \
---name rmqbroker --privileged=true \
-docker.io/apache/rocketmq:5.3.2 sh mqbroker
-
-# 拷贝脚本文件
-docker cp rmqbroker:/home/rocketmq/rocketmq-5.3.2/bin/runbroker.sh /data/rocketmq/broker/bin
-```
-
-
-
-**9、 启动容器 Broker**
-
-```
-# 删除容器 Broker
-docker rm -f rmqbroker
-
-# 启动容器 Broker
-docker run -d --network rocketmq \
---restart=always --name rmqbroker --privileged=true \
--p 10911:10911 -p 10909:10909 \
--v /data/rocketmq/broker/logs:/root/logs \
--v /data/rocketmq/broker/store:/root/store \
--v /data/rocketmq/broker/conf/broker.conf:/home/rocketmq/broker.conf \
--v /data/rocketmq/broker/bin/runbroker.sh:/home/rocketmq/rocketmq-5.3.2/bin/runbroker.sh \
--e "NAMESRV_ADDR=rmqnamesrv:9876" \
-docker.io/apache/rocketmq:5.3.2 sh mqbroker --enable-proxy -c /home/rocketmq/broker.conf
-
-# 查看启动日志
-docker logs -f rmqbroker
-```
-
-- **启动成功日志如下**
-
-
-
-
-
-**10、部署RocketMQ控制台(rocketmq-dashboard)**
-
-- **拉取镜像**
-
- ```sh
- docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apacherocketmq/rocketmq-dashboard:2.0.1
- docker tag swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/apacherocketmq/rocketmq-dashboard:2.0.1 docker.io/apacherocketmq/rocketmq-dashboard:2.0.1
- ```
-
-
-
-**11、 启动容器 Rocketmq-dashboard**
-
-```
-docker run -d \
---restart=always --name rmq-dashboard \
--p 8080:8080 --network rocketmq \
--e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
- docker.io/apacherocketmq/rocketmq-dashboard:2.0.1
-```
-
-
-
-**12、 查看启动日志**
-
-```sh
-docker logs -f rmq-dashboard
-```
-
-
-
-
-
-**13、 访问RMQ控制台**
-
-- [**http://10.10.14.14:8080/**](http://10.10.14.14:8080/) **( IP地址改成自己的 )**
-
-
-
-**14、 查看创建的 RocketMQ**
-
-
\ No newline at end of file
diff --git a/dsAiSupport/Doc/5、安装RocketMQ.md b/dsAiSupport/Doc/5、安装RocketMQ.md
new file mode 100644
index 00000000..fc1d82ca
--- /dev/null
+++ b/dsAiSupport/Doc/5、安装RocketMQ.md
@@ -0,0 +1,84 @@
+### 安装文档
+
+> https://rocketmq.apache.org/zh/docs/4.x/quickstart/01quickstart
+>
+
+
+
+#### 安装$JDK$
+
+```
+cd /usr/local
+rz -be
+jdk-8u421-linux-x64.tar.gz
+tar -xvf jdk-8u421-linux-x64.tar.gz
+rm -rf jdk-8u421-linux-x64.tar.gz
+mv jdk1.8.0_421/ jdk
+
+vi /etc/profile
+
+GG到最后:
+
+export JAVA_HOME=/usr/local/jdk
+export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
+export PATH=$PATH:$JAVA_HOME/bin
+
+source /etc/profile
+
+java -version
+```
+
+
+
+#### 安装$RocketMQ$
+
+```shell
+cd /usr/local
+mkdir rocketmq
+rz -be
+rocketmq-all-4.9.4-bin-release.zip
+unzip rocketmq-all-4.9.4-bin-release.zip
+rm -rf rocketmq-all-4.9.4-bin-release.zip
+mv rocketmq-all-4.9.4-bin-release/ rocketmq
+cd rocketmq
+
+### 启动namesrv
+nohup sh bin/mqnamesrv &
+
+### 验证namesrv是否启动成功
+tail -f /root/logs/rocketmqlogs/namesrv.log
+
+2024-07-31 13:48:37 INFO main - The Name Server boot success. serializeType=JSON
+
+### 启动Broker
+nohup sh bin/mqbroker -n localhost:9876 &
+
+### 验证broker是否启动成功
+tail -f /root/logs/rocketmqlogs/broker.log
+
+main - The broker[RockyLinux, 10.10.14.210:10911] boot success. serializeType=JSON and name server is localhost:9876
+```
+
+
+
+#### 消息收发
+
+```
+export NAMESRV_ADDR=localhost:9876
+cd /usr/local/rocketmq
+sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
+ SendResult [sendStatus=SEND_OK, msgId= ...
+
+sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
+ ConsumeMessageThread_%d Receive New Messages: [MessageExt...
+```
+
+
+
+#### 关闭服务器
+
+```shell
+sh bin/mqshutdown broker
+sh bin/mqshutdown namesrv
+```
+
diff --git a/dsAiSupport/pom.xml b/dsAiSupport/pom.xml
index 65306de0..4cc188ff 100644
--- a/dsAiSupport/pom.xml
+++ b/dsAiSupport/pom.xml
@@ -43,11 +43,13 @@
java-jwt
4.4.0
+
org.apache.rocketmq
- rocketmq-client-java
- 5.0.7
+ rocketmq-client
+ 5.3.0
+
org.apache.httpcomponents
httpmime
diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/AiSupportApplication.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/AiSupportApplication.java
index 5f6f7429..19da8b33 100644
--- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/AiSupportApplication.java
+++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/AiSupportApplication.java
@@ -1,12 +1,8 @@
package com.dsideal.aiSupport;
-import com.dsideal.aiSupport.Config.RocketMQConfig;
import com.dsideal.aiSupport.Index.IndexController;
import com.dsideal.aiSupport.Interceptor.*;
import com.dsideal.aiSupport.Plugin.YamlProp;
-import com.dsideal.aiSupport.Test.MessageProducer;
-import com.dsideal.aiSupport.Test.MessagePushConsumer;
-import com.dsideal.aiSupport.Test.MyMessageListener;
import com.dsideal.aiSupport.Util.FileUtil;
import com.dsideal.aiSupport.Util.LogBackLogFactory;
import com.jfinal.config.*;
@@ -130,8 +126,6 @@ public class AiSupportApplication extends JFinalConfig {
public void configHandler(Handlers me) {
}
- private MessageProducer messageProducer;
- private MessagePushConsumer messagePushConsumer;
/**
* 在jfinal启动完成后马上执行
*/
@@ -141,20 +135,5 @@ public class AiSupportApplication extends JFinalConfig {
String path = AiSupportApplication.class.getClassLoader().getResource("logo.txt").getPath();
File file = new File(path);
System.out.println(FileUtil.txt2String(file));
-
- // 初始化RocketMQ生产者
- messageProducer = new MessageProducer();
-
- // 初始化RocketMQ消费者
- MyMessageListener messageListener = new MyMessageListener();
- messagePushConsumer = new MessagePushConsumer(
- "YourConsumerGroup",
- RocketMQConfig.getDefaultTopic(),
- "*", // 订阅所有Tag
- messageListener
- );
-
- // 将生产者注入到全局对象中,方便在Controller中使用
- //Jboot.setJbootObject(MessageProducer.class.getName(), messageProducer);
}
}
diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Config/RocketMQConfig.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Config/RocketMQConfig.java
deleted file mode 100644
index dd50de23..00000000
--- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Config/RocketMQConfig.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.dsideal.aiSupport.Config;
-
-import org.apache.rocketmq.client.apis.ClientConfiguration;
-import org.apache.rocketmq.client.apis.ClientConfigurationBuilder;
-import org.apache.rocketmq.client.apis.ClientServiceProvider;
-
-public class RocketMQConfig {
- // RocketMQ服务器地址
- private static final String ENDPOINT = "10.10.14.14:8081";
- // 默认主题
- private static final String DEFAULT_TOPIC = "TestTopic";
-
- private static ClientServiceProvider provider;
- private static ClientConfiguration configuration;
-
- static {
- provider = ClientServiceProvider.loadService();
- ClientConfigurationBuilder builder = ClientConfiguration.newBuilder().setEndpoints(ENDPOINT);
- configuration = builder.build();
- }
-
- public static ClientServiceProvider getProvider() {
- return provider;
- }
-
- public static ClientConfiguration getConfiguration() {
- return configuration;
- }
-
- public static String getDefaultTopic() {
- return DEFAULT_TOPIC;
- }
-}
\ No newline at end of file
diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/MessageProducer.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/MessageProducer.java
deleted file mode 100644
index b2eac45e..00000000
--- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/MessageProducer.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.dsideal.aiSupport.Test;
-
-import com.dsideal.aiSupport.Config.RocketMQConfig;
-import org.apache.rocketmq.client.apis.ClientException;
-import org.apache.rocketmq.client.apis.message.Message;
-import org.apache.rocketmq.client.apis.producer.Producer;
-import org.apache.rocketmq.client.apis.producer.SendReceipt;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-
-public class MessageProducer {
- private static final Logger logger = LoggerFactory.getLogger(MessageProducer.class);
- private Producer producer;
-
- public MessageProducer() {
- try {
- producer = RocketMQConfig.getProvider().newProducerBuilder()
- .setTopics(RocketMQConfig.getDefaultTopic())
- .setClientConfiguration(RocketMQConfig.getConfiguration())
- .build();
- } catch (ClientException e) {
- logger.error("Failed to create producer", e);
- }
- }
-
- public void sendMessage(String topic, String tag, String key, String body) {
- try {
- Message message = RocketMQConfig.getProvider().newMessageBuilder()
- .setTopic(topic)
- .setKeys(key)
- .setTag(tag)
- .setBody(body.getBytes())
- .build();
-
- SendReceipt sendReceipt = producer.send(message);
- logger.info("Send message successfully, messageId={}", sendReceipt.getMessageId());
- } catch (ClientException e) {
- logger.error("Failed to send message", e);
- }
- }
-
- public void close() throws IOException {
- if (producer != null) {
- producer.close();
- }
- }
-}
\ No newline at end of file
diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/MessagePushConsumer.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/MessagePushConsumer.java
deleted file mode 100644
index f0fb46b9..00000000
--- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/MessagePushConsumer.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.dsideal.aiSupport.Test;
-
-import com.dsideal.aiSupport.Config.RocketMQConfig;
-import org.apache.rocketmq.client.apis.ClientException;
-import org.apache.rocketmq.client.apis.consumer.FilterExpression;
-import org.apache.rocketmq.client.apis.consumer.FilterExpressionType;
-import org.apache.rocketmq.client.apis.consumer.MessageListener;
-import org.apache.rocketmq.client.apis.consumer.PushConsumer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.Collections;
-
-public class MessagePushConsumer {
- private static final Logger logger = LoggerFactory.getLogger(MessagePushConsumer.class);
- private PushConsumer pushConsumer;
-
- public MessagePushConsumer(String consumerGroup, String topic, String tag, MessageListener messageListener) {
- try {
- FilterExpression filterExpression = new FilterExpression(tag, FilterExpressionType.TAG);
- pushConsumer = RocketMQConfig.getProvider().newPushConsumerBuilder()
- .setClientConfiguration(RocketMQConfig.getConfiguration())
- .setConsumerGroup(consumerGroup)
- .setSubscriptionExpressions(Collections.singletonMap(topic, filterExpression))
- .setMessageListener(messageListener)
- .build();
-
- logger.info("Consumer started successfully");
- } catch (ClientException e) {
- logger.error("Failed to create consumer", e);
- }
- }
-
- public void close() throws IOException {
- if (pushConsumer != null) {
- pushConsumer.close();
- }
- }
-}
\ No newline at end of file
diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/MyMessageListener.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/MyMessageListener.java
deleted file mode 100644
index 9dcfafda..00000000
--- a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/MyMessageListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.dsideal.aiSupport.Test;
-
-import org.apache.rocketmq.client.apis.consumer.ConsumeResult;
-import org.apache.rocketmq.client.apis.consumer.MessageListener;
-import org.apache.rocketmq.client.apis.message.MessageView;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class MyMessageListener implements MessageListener {
- private static final Logger logger = LoggerFactory.getLogger(MyMessageListener.class);
-
- @Override
- public ConsumeResult consume(MessageView messageView) {
- try {
- String messageId = String.valueOf(messageView.getMessageId());
- String topic = messageView.getTopic();
- String tag = String.valueOf(messageView.getTag());
- byte[] body = messageView.getBody().array();
- String content = new String(body);
-
- logger.info("Received message: messageId={}, topic={}, tag={}, content={}",
- messageId, topic, tag, content);
-
- // 处理消息的业务逻辑
-
- return ConsumeResult.SUCCESS;
- } catch (Exception e) {
- logger.error("Failed to consume message", e);
- return ConsumeResult.FAILURE;
- }
- }
-}
\ No newline at end of file
diff --git a/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/TestRocketMQ.java b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/TestRocketMQ.java
new file mode 100644
index 00000000..d0849805
--- /dev/null
+++ b/dsAiSupport/src/main/java/com/dsideal/aiSupport/Test/TestRocketMQ.java
@@ -0,0 +1,142 @@
+package com.charge.tools;
+
+import org.apache.rocketmq.client.consumer.DefaultLitePullConsumer;
+import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.client.producer.MessageQueueSelector;
+import org.apache.rocketmq.client.producer.SendCallback;
+import org.apache.rocketmq.client.producer.SendResult;
+import org.apache.rocketmq.common.message.Message;
+import org.apache.rocketmq.common.message.MessageExt;
+import org.apache.rocketmq.common.message.MessageQueue;
+import org.apache.rocketmq.remoting.common.RemotingHelper;
+
+import java.io.IOException;
+import java.util.List;
+
+//Java整合RocketMQ实现生产消费
+//https://blog.csdn.net/qq_28314431/article/details/128452607
+
+public class TestRocketMQ {
+ private final static String nameServer = "10.10.14.210:9876";
+
+ private final static String producerGroup = "my_group";
+ private final static String consumerGroup = "my_group";
+ private final static String topic = "topic-test";
+
+ //同步发送
+ public static void syncSend() {
+ try {
+ // 初始化一个producer并设置Producer group name
+ DefaultMQProducer producer = new DefaultMQProducer(producerGroup);
+ // 设置NameServer地址
+ producer.setNamesrvAddr(nameServer);
+ // 启动producer
+ producer.start();
+ // 创建一条消息,并指定topic、tag、body等信息,tag可以理解成标签,对消息进行再归类,RocketMQ可以在消费端对tag进行过滤
+ Message msg = new Message(topic, "tagA", "Hello RocketMQ".getBytes(RemotingHelper.DEFAULT_CHARSET));
+ // 利用producer进行发送,并同步等待发送结果
+ SendResult sendResult = producer.send(msg, 10000);
+ System.out.printf("%s%n", sendResult);
+ // 一旦producer不再使用,关闭producer
+ producer.shutdown();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ //异步发送
+ public static void asyncSend() throws IOException {
+ try {
+ // 初始化一个producer并设置Producer group name
+ DefaultMQProducer producer = new DefaultMQProducer(producerGroup);
+ // 设置NameServer地址
+ producer.setNamesrvAddr(nameServer);
+ // 启动producer
+ producer.start();
+ // 创建一条消息,并指定topic、tag、body等信息,tag可以理解成标签,对消息进行再归类,RocketMQ可以在消费端对tag进行过滤
+ Message msg = new Message(topic, "tagB", "Hello RocketMQ".getBytes(RemotingHelper.DEFAULT_CHARSET));
+ // 异步发送消息, 发送结果通过callback返回给客户端
+ producer.send(msg, new SendCallback() {
+ public void onSuccess(SendResult sendResult) {
+ System.out.printf("OK %s %n",
+ sendResult.getMsgId());
+ }
+
+ public void onException(Throwable e) {
+ System.out.printf("Exception %s %n", e);
+ e.printStackTrace();
+ }
+ }, 10000);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ System.in.read();
+ }
+
+ //顺序消息
+ public static void orderSend() {
+ try {
+ // 初始化一个producer并设置Producer group name
+ DefaultMQProducer producer = new DefaultMQProducer(producerGroup);
+ // 设置NameServer地址
+ producer.setNamesrvAddr(nameServer);
+ producer.setSendMsgTimeout(10000);
+ // 启动producer
+ producer.start();
+ String[] tags = new String[]{"TagA", "TagB", "TagC"};
+ for (int i = 0; i < 10; i++) {
+ int orderId = i % 10;
+ Message msg = new Message(topic, tags[i % tags.length], "KEY" + i, ("Hello RocketMQ " + i).getBytes(RemotingHelper.DEFAULT_CHARSET));
+ SendResult sendResult = producer.send(msg, new MessageQueueSelector() {
+ public MessageQueue select(List mqs, Message msg, Object arg) {
+ Integer id = (Integer) arg;
+ int index = id % mqs.size();
+ return mqs.get(index);
+ }
+ }, orderId);
+ System.out.printf("%s%n", sendResult);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+
+ public static void consumerPull() {
+ try {
+ DefaultLitePullConsumer consumer = new DefaultLitePullConsumer(consumerGroup);
+ consumer.setNamesrvAddr(nameServer);
+ //关闭自动提交
+ consumer.setAutoCommit(false);
+ consumer.subscribe(topic, "*");
+ consumer.setPullBatchSize(20);
+ consumer.start();
+ while (true) {
+ List messageExts = consumer.poll();
+ if (messageExts.size() > 0) {
+ String str = new String(messageExts.get(0).getBody());
+ System.out.println(str);
+ } else {
+ System.out.println("本轮没有找到需要消费的消息!");
+ }
+ consumer.commitSync();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public static void main(String[] args) throws IOException {
+ //同步发送
+ syncSend();
+
+ //异步发送
+ //asyncSend();
+
+ //顺序消息
+ orderSend();
+
+ //拉消费
+ //consumerPull();
+ }
+}
diff --git a/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/AiPpt/Doc/文档.txt b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/AiPpt/Doc/文档.txt
new file mode 100644
index 00000000..cfd6e929
--- /dev/null
+++ b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/AiPpt/Doc/文档.txt
@@ -0,0 +1,16 @@
+# 官网
+https://docmee.cn/
+
+# 用户名与密码
+18686619970
+密码:手机验证码
+
+# 体验
+https://www.veasion.cn/AiPPT/
+
+# 充值
+https://open.docmee.cn/open/workspace/top-up
+未充值
+
+# 模板选择【展示】
+https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202505131336410.png
\ No newline at end of file
diff --git a/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/DashScope/Doc/文档.txt b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/DashScope/Doc/文档.txt
new file mode 100644
index 00000000..54df7a91
--- /dev/null
+++ b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/DashScope/Doc/文档.txt
@@ -0,0 +1 @@
+https://help.aliyun.com/zh/model-studio/emo-api?spm=a2c4g.11186623.help-menu-2400256.d_2_3_4_1.7d8a5f84mfOU9j
\ No newline at end of file
diff --git a/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/HuoShanFangZhou/Doc/文档.txt b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/HuoShanFangZhou/Doc/文档.txt
new file mode 100644
index 00000000..49439e6c
--- /dev/null
+++ b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/HuoShanFangZhou/Doc/文档.txt
@@ -0,0 +1 @@
+https://www.volcengine.com/docs/82379/1520757
\ No newline at end of file
diff --git a/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/KeLing/Doc/文档.txt b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/KeLing/Doc/文档.txt
new file mode 100644
index 00000000..c5637d46
--- /dev/null
+++ b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/KeLing/Doc/文档.txt
@@ -0,0 +1,9 @@
+# 可灵AI使用指南-图片生成
+https://docs.qingque.cn/d/home/eZQApd0EZqQHWXBEi7lL16_lD?identityId=26L1FFNIZ7r#section=h.60mmflz96wnl
+
+# 可灵控制台
+https://console-cn.klingai.com/console/expense-center/resource-pack-manage
+
+# 登录
+18686619970
+获取验证码登录
diff --git a/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Doc/文档.txt b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Doc/文档.txt
new file mode 100644
index 00000000..814e0c5f
--- /dev/null
+++ b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Doc/文档.txt
@@ -0,0 +1,39 @@
+# 官网
+https://www.liblib.art/apis
+
+# 账号
+18686619970
+手机验证码登录
+
+# 访问凭证
+AK: sOCtVLVTNOZkRMajlhzCmg
+SK: PUe8QTRG9i0G9EbpedHmIpLQ0FyxoYY9
+
+
+# 接口文档
+https://liblibai.feishu.cn/wiki/UAMVw67NcifQHukf8fpccgS5n6d
+
+
+计划
+API试用计划
+到期时间
+2025/05/22 23:59:59
+剩余积分
+500
+购买积分
+并发任务数
+1个
+
+
+# LiblibAI工作流
+社区商用工作流和个人本地工作流均可支持调用。工作流挑选和商用查询可至https://www.liblib.art/workflows
+
+# - 星流Star-3 Alpha:适合对AI生图参数不太了解或不想复杂控制的用户。搭载自带LoRA推荐算法,对自然语言的精准响应,提供极致的图像质量,能够生成具有照片级真实感的视觉效果,不能自由添加LoRA,仅支持部分ControlNet。生图效果可至星流官网https://xingliu.art/体验。
+
+# - LiblibAI自定义模型:若需要特定LoRA和ControlNet只能选此模式,适合高度自由、精准控制和特定风格的场景,基于F.1/XL/v3/v1.5等基础算法,支持自定义调用LiblibAI内全量30万+可商用模型和任意私有模型。最新开源模型和插件第一时间更新。模型挑选和商用查询可至本文档3.1或https://www.liblib.art/。
+
+
+# 参考文档
+https://liblibai.feishu.cn/wiki/UAMVw67NcifQHukf8fpccgS5n6d
+
+https://www.liblib.art/workflows
\ No newline at end of file
diff --git a/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/019dba57244f2682e672a8a1ce9d50536e85f130a1142d19755c8266d4a8577c.png b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/019dba57244f2682e672a8a1ce9d50536e85f130a1142d19755c8266d4a8577c.png
new file mode 100644
index 00000000..d554c372
Binary files /dev/null and b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/019dba57244f2682e672a8a1ce9d50536e85f130a1142d19755c8266d4a8577c.png differ
diff --git a/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/1e458ad4a7f30e853acff80f4723f42638c21205f0ff2d64898589dd994f1f94.png b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/1e458ad4a7f30e853acff80f4723f42638c21205f0ff2d64898589dd994f1f94.png
new file mode 100644
index 00000000..6dbce122
Binary files /dev/null and b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/1e458ad4a7f30e853acff80f4723f42638c21205f0ff2d64898589dd994f1f94.png differ
diff --git a/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/53ea797eeb6f5adafdfdeb3fc9918e200fb8b716e1773cebe54535b36adb5134.png b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/53ea797eeb6f5adafdfdeb3fc9918e200fb8b716e1773cebe54535b36adb5134.png
new file mode 100644
index 00000000..23a74482
Binary files /dev/null and b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/53ea797eeb6f5adafdfdeb3fc9918e200fb8b716e1773cebe54535b36adb5134.png differ
diff --git a/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/7d6679969e1c6e014d37710935c2603b40b7217e14bc5003ea2ca8331e9ef40d.png b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/7d6679969e1c6e014d37710935c2603b40b7217e14bc5003ea2ca8331e9ef40d.png
new file mode 100644
index 00000000..cb1d4ce3
Binary files /dev/null and b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/7d6679969e1c6e014d37710935c2603b40b7217e14bc5003ea2ca8331e9ef40d.png differ
diff --git a/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/TextToImageUltra.png b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/TextToImageUltra.png
new file mode 100644
index 00000000..a8b744c9
Binary files /dev/null and b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Liblib/Example/TextToImageUltra.png differ
diff --git a/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Midjourney/Doc/文档.txt b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Midjourney/Doc/文档.txt
new file mode 100644
index 00000000..d7149319
--- /dev/null
+++ b/dsAiSupport/target/classes/com/dsideal/aiSupport/Util/Midjourney/Doc/文档.txt
@@ -0,0 +1,3 @@
+https://goapi.gptnb.ai/account/profile
+littlehb
+mdcija780522
\ No newline at end of file