diff --git a/Message/rocketmq-4.9.6-cluster-1m2s/broker-master/broker.conf b/Message/rocketmq-4.9.6-cluster-1m2s/broker-master/broker.conf
new file mode 100644
index 0000000..e923d3f
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-1m2s/broker-master/broker.conf
@@ -0,0 +1,26 @@
+namesrvAddr=rmqnamesrv:9876
+brokerIP1=172.20.0.81
+brokerName=rmqbroker1
+brokerClusterName=rmqbroker
+brokerId=0
+autoCreateTopicEnable=false
+autoCreateSubscriptionGroup=true
+rejectTransactionMessage=false
+fetchNamesrvAddrByAddressServer=false
+storePathRootDir=/home/rocketmq/rocketmq-4.9.6/store
+storePathCommitLog=/home/rocketmq/rocketmq-4.9.6/store/commitlog
+flushIntervalCommitLog=1000
+flushCommitLogTimed=false
+deleteWhen=04
+fileReservedTime=72
+maxTransferBytesOnMessageInMemory=262144
+maxTransferCountOnMessageInMemory=32
+maxTransferBytesOnMessageInDisk=65536
+maxTransferCountOnMessageInDisk=8
+accessMessageInMemoryMaxRatio=40
+messageIndexEnable=true
+messageIndexSafe=false
+haMasterAddress=
+brokerRole=ASYNC_MASTER
+flushDiskType=ASYNC_FLUSH
+cleanFileForciblyEnable=true
diff --git a/Message/rocketmq-4.9.6-cluster-1m2s/broker-slave1/broker.conf b/Message/rocketmq-4.9.6-cluster-1m2s/broker-slave1/broker.conf
new file mode 100644
index 0000000..286fc7b
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-1m2s/broker-slave1/broker.conf
@@ -0,0 +1,26 @@
+namesrvAddr=rmqnamesrv:9876
+brokerIP1=172.20.0.82
+brokerName=rmqbroker2
+brokerClusterName=rmqbroker
+brokerId=1
+autoCreateTopicEnable=false
+autoCreateSubscriptionGroup=true
+rejectTransactionMessage=false
+fetchNamesrvAddrByAddressServer=false
+storePathRootDir=/home/rocketmq/rocketmq-4.9.6/store
+storePathCommitLog=/home/rocketmq/rocketmq-4.9.6/store/commitlog
+flushIntervalCommitLog=1000
+flushCommitLogTimed=false
+deleteWhen=04
+fileReservedTime=72
+maxTransferBytesOnMessageInMemory=262144
+maxTransferCountOnMessageInMemory=32
+maxTransferBytesOnMessageInDisk=65536
+maxTransferCountOnMessageInDisk=8
+accessMessageInMemoryMaxRatio=40
+messageIndexEnable=true
+messageIndexSafe=false
+haMasterAddress=
+brokerRole=SLAVE
+flushDiskType=ASYNC_FLUSH
+cleanFileForciblyEnable=true
diff --git a/Message/rocketmq-4.9.6-cluster-1m2s/broker-slave2/broker.conf b/Message/rocketmq-4.9.6-cluster-1m2s/broker-slave2/broker.conf
new file mode 100644
index 0000000..d11d5c0
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-1m2s/broker-slave2/broker.conf
@@ -0,0 +1,26 @@
+namesrvAddr=rmqnamesrv:9876
+brokerIP1=172.20.0.83
+brokerName=rmqbroker3
+brokerClusterName=rmqbroker
+brokerId=2
+autoCreateTopicEnable=false
+autoCreateSubscriptionGroup=true
+rejectTransactionMessage=false
+fetchNamesrvAddrByAddressServer=false
+storePathRootDir=/home/rocketmq/rocketmq-4.9.6/store
+storePathCommitLog=/home/rocketmq/rocketmq-4.9.6/store/commitlog
+flushIntervalCommitLog=1000
+flushCommitLogTimed=false
+deleteWhen=04
+fileReservedTime=72
+maxTransferBytesOnMessageInMemory=262144
+maxTransferCountOnMessageInMemory=32
+maxTransferBytesOnMessageInDisk=65536
+maxTransferCountOnMessageInDisk=8
+accessMessageInMemoryMaxRatio=40
+messageIndexEnable=true
+messageIndexSafe=false
+haMasterAddress=
+brokerRole=SLAVE
+flushDiskType=ASYNC_FLUSH
+cleanFileForciblyEnable=true
diff --git a/Message/rocketmq-4.9.6-cluster-1m2s/demo.png b/Message/rocketmq-4.9.6-cluster-1m2s/demo.png
new file mode 100644
index 0000000..dce4935
Binary files /dev/null and b/Message/rocketmq-4.9.6-cluster-1m2s/demo.png differ
diff --git a/Message/rocketmq-4.9.6-cluster-1m2s/docker-compose.yml b/Message/rocketmq-4.9.6-cluster-1m2s/docker-compose.yml
new file mode 100644
index 0000000..5f93c48
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-1m2s/docker-compose.yml
@@ -0,0 +1,85 @@
+version: '3.8'
+
+# 网桥 -> 方便相互通讯
+networks:
+ rocketmq:
+ ipam:
+ driver: default
+ config:
+ - subnet: "172.20.0.0/24"
+
+services:
+ namesrv:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/apache-rocketmq:4.9.6
+ container_name: rmqnamesrv
+ ports:
+ - "9876:9876"
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.80
+ command: sh mqnamesrv
+ broker1:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/apache-rocketmq:4.9.6
+ container_name: rmqbroker1
+ ports:
+ - "10909:10909"
+ - "10911:10911"
+ - "10912:10912"
+ environment:
+ - NAMESRV_ADDR=rmqnamesrv:9876
+ volumes:
+ - ./broker-master/broker.conf:/home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ depends_on:
+ - namesrv
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.81
+ command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ broker2:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/apache-rocketmq:4.9.6
+ container_name: rmqbroker2
+ ports:
+ - "10809:10909"
+ - "10811:10911"
+ - "10812:10912"
+ environment:
+ - NAMESRV_ADDR=rmqnamesrv:9876
+ volumes:
+ - ./broker-slave1/broker.conf:/home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ depends_on:
+ - namesrv
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.82
+ command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ broker3:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/apache-rocketmq:4.9.6
+ container_name: rmqbroker3
+ ports:
+ - "10709:10909"
+ - "10711:10911"
+ - "10712:10912"
+ environment:
+ - NAMESRV_ADDR=rmqnamesrv:9876
+ volumes:
+ - ./broker-slave2/broker.conf:/home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ depends_on:
+ - namesrv
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.83
+ command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ rmqdashboard:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/rocketmq-dashboard:latest
+ container_name: rocketmq-dashboard
+ ports:
+ - "8080:8080"
+ restart: always
+ depends_on:
+ - namesrv
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.84
+ environment:
+ - JAVA_OPTS= -Xms256M -Xms512M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
+
diff --git a/Message/rocketmq-4.9.6-cluster-1m2s/install.sh b/Message/rocketmq-4.9.6-cluster-1m2s/install.sh
new file mode 100644
index 0000000..943293a
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-1m2s/install.sh
@@ -0,0 +1 @@
+docker-compose -f docker-compose.yml -p rocketmq up -d
\ No newline at end of file
diff --git a/Message/rocketmq-4.9.6-cluster-1m2s/run.md b/Message/rocketmq-4.9.6-cluster-1m2s/run.md
new file mode 100644
index 0000000..8fdb90e
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-1m2s/run.md
@@ -0,0 +1,100 @@
+# RocketMQ 主从版
+
+https://rocketmq.apache.org/zh/docs/4.x/quickstart/01quickstart
+
+### 部署方式
+
+```shell
+sh install.sh
+```
+
+### Maven依赖
+
+```xml
+
+
+ org.apache.rocketmq
+ rocketmq-client
+ 4.9.6
+
+```
+
+### 生产者 官方示例
+
+```java
+import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.client.producer.SendResult;
+import org.apache.rocketmq.common.message.Message;
+
+public class ProducerExample {
+ public static void main(String[] args) throws Exception {
+ // 创建生产者实例,并设置生产者组名
+ DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
+ // 设置 Name Server 地址,此处为示例,实际使用时请替换为真实的 Name Server 地址
+ producer.setNamesrvAddr("localhost:9876");
+ producer.start();
+
+ try {
+ // 创建消息实例,指定 topic、Tag和消息体
+ Message msg = new Message("TestTopic", "TagA", ("Hello RocketMQ").getBytes());
+ // 发送消息并获取发送结果
+ SendResult sendResult = producer.send(msg);
+ System.out.println("Message sent: " + new String(msg.getBody()));
+ System.out.println("Send result: " + sendResult);
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.out.println("Message sending failed.");
+ } finally {
+ // 关闭生产者
+ producer.shutdown();
+ }
+ }
+}
+```
+
+### 消费者 官方示例
+
+```java
+import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
+import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
+import org.apache.rocketmq.common.message.MessageExt;
+
+import java.util.List;
+
+public class ConsumerExample {
+ public static void main(String[] args) throws Exception {
+ // 创建消费者实例,并设置消费者组名
+ DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");
+ // 设置 Name Server 地址,此处为示例,实际使用时请替换为真实的 Name Server 地址
+ consumer.setNamesrvAddr("localhost:9876");
+ // 订阅指定的主题和标签(* 表示所有标签)
+ consumer.subscribe("TestTopic", "*");
+
+ // 注册消息监听器
+ consumer.registerMessageListener(new MessageListenerConcurrently() {
+ @Override
+ public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) {
+ for (MessageExt msg : msgs) {
+ System.out.println("Received message: " + new String(msg.getBody()));
+ }
+ return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
+ }
+ });
+
+ // 启动消费者
+ consumer.start();
+ System.out.println("Consumer started.");
+ }
+}
+```
+
+### 访问地址
+
+访问地址:http://192.168.235.104:8080
+
+### 示例
+
+
+
diff --git a/Message/rocketmq-4.9.6-cluster-1m2s/shutdown.sh b/Message/rocketmq-4.9.6-cluster-1m2s/shutdown.sh
new file mode 100644
index 0000000..5afab2b
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-1m2s/shutdown.sh
@@ -0,0 +1 @@
+docker-compose -f docker-compose.yml -p rocketmq down
\ No newline at end of file
diff --git a/Message/rocketmq-4.9.6-cluster-2m/broker-master1/broker.conf b/Message/rocketmq-4.9.6-cluster-2m/broker-master1/broker.conf
new file mode 100644
index 0000000..e923d3f
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-2m/broker-master1/broker.conf
@@ -0,0 +1,26 @@
+namesrvAddr=rmqnamesrv:9876
+brokerIP1=172.20.0.81
+brokerName=rmqbroker1
+brokerClusterName=rmqbroker
+brokerId=0
+autoCreateTopicEnable=false
+autoCreateSubscriptionGroup=true
+rejectTransactionMessage=false
+fetchNamesrvAddrByAddressServer=false
+storePathRootDir=/home/rocketmq/rocketmq-4.9.6/store
+storePathCommitLog=/home/rocketmq/rocketmq-4.9.6/store/commitlog
+flushIntervalCommitLog=1000
+flushCommitLogTimed=false
+deleteWhen=04
+fileReservedTime=72
+maxTransferBytesOnMessageInMemory=262144
+maxTransferCountOnMessageInMemory=32
+maxTransferBytesOnMessageInDisk=65536
+maxTransferCountOnMessageInDisk=8
+accessMessageInMemoryMaxRatio=40
+messageIndexEnable=true
+messageIndexSafe=false
+haMasterAddress=
+brokerRole=ASYNC_MASTER
+flushDiskType=ASYNC_FLUSH
+cleanFileForciblyEnable=true
diff --git a/Message/rocketmq-4.9.6-cluster-2m/broker-master2/broker.conf b/Message/rocketmq-4.9.6-cluster-2m/broker-master2/broker.conf
new file mode 100644
index 0000000..4a82f86
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-2m/broker-master2/broker.conf
@@ -0,0 +1,26 @@
+namesrvAddr=rmqnamesrv:9876
+brokerIP1=172.20.0.82
+brokerName=rmqbroker2
+brokerClusterName=rmqbroker
+brokerId=0
+autoCreateTopicEnable=false
+autoCreateSubscriptionGroup=true
+rejectTransactionMessage=false
+fetchNamesrvAddrByAddressServer=false
+storePathRootDir=/home/rocketmq/rocketmq-4.9.6/store
+storePathCommitLog=/home/rocketmq/rocketmq-4.9.6/store/commitlog
+flushIntervalCommitLog=1000
+flushCommitLogTimed=false
+deleteWhen=04
+fileReservedTime=72
+maxTransferBytesOnMessageInMemory=262144
+maxTransferCountOnMessageInMemory=32
+maxTransferBytesOnMessageInDisk=65536
+maxTransferCountOnMessageInDisk=8
+accessMessageInMemoryMaxRatio=40
+messageIndexEnable=true
+messageIndexSafe=false
+haMasterAddress=
+brokerRole=ASYNC_MASTER
+flushDiskType=ASYNC_FLUSH
+cleanFileForciblyEnable=true
diff --git a/Message/rocketmq-4.9.6-cluster-2m/demo.png b/Message/rocketmq-4.9.6-cluster-2m/demo.png
new file mode 100644
index 0000000..a48e64b
Binary files /dev/null and b/Message/rocketmq-4.9.6-cluster-2m/demo.png differ
diff --git a/Message/rocketmq-4.9.6-cluster-2m/docker-compose.yml b/Message/rocketmq-4.9.6-cluster-2m/docker-compose.yml
new file mode 100644
index 0000000..1b67c65
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-2m/docker-compose.yml
@@ -0,0 +1,68 @@
+version: '3.8'
+
+# 网桥 -> 方便相互通讯
+networks:
+ rocketmq:
+ ipam:
+ driver: default
+ config:
+ - subnet: "172.20.0.0/24"
+
+services:
+ namesrv:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/apache-rocketmq:4.9.6
+ container_name: rmqnamesrv
+ ports:
+ - "9876:9876"
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.80
+ command: sh mqnamesrv
+ broker1:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/apache-rocketmq:4.9.6
+ container_name: rmqbroker1
+ ports:
+ - "10909:10909"
+ - "10911:10911"
+ - "10912:10912"
+ environment:
+ - NAMESRV_ADDR=rmqnamesrv:9876
+ volumes:
+ - ./broker-master1/broker.conf:/home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ depends_on:
+ - namesrv
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.81
+ command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ broker2:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/apache-rocketmq:4.9.6
+ container_name: rmqbroker2
+ ports:
+ - "10809:10909"
+ - "10811:10911"
+ - "10812:10912"
+ environment:
+ - NAMESRV_ADDR=rmqnamesrv:9876
+ volumes:
+ - ./broker-master2/broker.conf:/home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ depends_on:
+ - namesrv
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.82
+ command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ rmqdashboard:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/rocketmq-dashboard:latest
+ container_name: rocketmq-dashboard
+ ports:
+ - "8080:8080"
+ restart: always
+ depends_on:
+ - namesrv
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.83
+ environment:
+ - JAVA_OPTS= -Xms256M -Xms512M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
+
diff --git a/Message/rocketmq-4.9.6-cluster-2m/install.sh b/Message/rocketmq-4.9.6-cluster-2m/install.sh
new file mode 100644
index 0000000..7f65302
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-2m/install.sh
@@ -0,0 +1,3 @@
+chmod -R 777 ./broker1
+chmod -R 777 ./broker2
+docker-compose -f docker-compose.yml -p rocketmq up -d
\ No newline at end of file
diff --git a/Message/rocketmq-4.9.6-cluster-2m/run.md b/Message/rocketmq-4.9.6-cluster-2m/run.md
new file mode 100644
index 0000000..aac5fc2
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-2m/run.md
@@ -0,0 +1,100 @@
+# RocketMQ 双主版
+
+https://rocketmq.apache.org/zh/docs/4.x/quickstart/01quickstart
+
+### 部署方式
+
+```shell
+sh install.sh
+```
+
+### Maven依赖
+
+```xml
+
+
+ org.apache.rocketmq
+ rocketmq-client
+ 4.9.6
+
+```
+
+### 生产者 官方示例
+
+```java
+import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.client.producer.SendResult;
+import org.apache.rocketmq.common.message.Message;
+
+public class ProducerExample {
+ public static void main(String[] args) throws Exception {
+ // 创建生产者实例,并设置生产者组名
+ DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
+ // 设置 Name Server 地址,此处为示例,实际使用时请替换为真实的 Name Server 地址
+ producer.setNamesrvAddr("localhost:9876");
+ producer.start();
+
+ try {
+ // 创建消息实例,指定 topic、Tag和消息体
+ Message msg = new Message("TestTopic", "TagA", ("Hello RocketMQ").getBytes());
+ // 发送消息并获取发送结果
+ SendResult sendResult = producer.send(msg);
+ System.out.println("Message sent: " + new String(msg.getBody()));
+ System.out.println("Send result: " + sendResult);
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.out.println("Message sending failed.");
+ } finally {
+ // 关闭生产者
+ producer.shutdown();
+ }
+ }
+}
+```
+
+### 消费者 官方示例
+
+```java
+import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
+import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
+import org.apache.rocketmq.common.message.MessageExt;
+
+import java.util.List;
+
+public class ConsumerExample {
+ public static void main(String[] args) throws Exception {
+ // 创建消费者实例,并设置消费者组名
+ DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");
+ // 设置 Name Server 地址,此处为示例,实际使用时请替换为真实的 Name Server 地址
+ consumer.setNamesrvAddr("localhost:9876");
+ // 订阅指定的主题和标签(* 表示所有标签)
+ consumer.subscribe("TestTopic", "*");
+
+ // 注册消息监听器
+ consumer.registerMessageListener(new MessageListenerConcurrently() {
+ @Override
+ public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) {
+ for (MessageExt msg : msgs) {
+ System.out.println("Received message: " + new String(msg.getBody()));
+ }
+ return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
+ }
+ });
+
+ // 启动消费者
+ consumer.start();
+ System.out.println("Consumer started.");
+ }
+}
+```
+
+### 访问地址
+
+访问地址:http://192.168.235.104:8080
+
+### 示例
+
+
+
diff --git a/Message/rocketmq-4.9.6-cluster-2m/shutdown.sh b/Message/rocketmq-4.9.6-cluster-2m/shutdown.sh
new file mode 100644
index 0000000..5afab2b
--- /dev/null
+++ b/Message/rocketmq-4.9.6-cluster-2m/shutdown.sh
@@ -0,0 +1 @@
+docker-compose -f docker-compose.yml -p rocketmq down
\ No newline at end of file
diff --git a/Message/rocketmq-4.9.6-standalone/docker-compose.yml b/Message/rocketmq-4.9.6-standalone/docker-compose.yml
new file mode 100644
index 0000000..43d0078
--- /dev/null
+++ b/Message/rocketmq-4.9.6-standalone/docker-compose.yml
@@ -0,0 +1,51 @@
+version: '3.8'
+
+# 网桥 -> 方便相互通讯
+networks:
+ rocketmq:
+ ipam:
+ driver: default
+ config:
+ - subnet: "172.20.0.0/24"
+
+services:
+ namesrv:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/apache-rocketmq:4.9.6
+ container_name: rmqnamesrv
+ ports:
+ - "9876:9876"
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.80
+ command: sh mqnamesrv
+ broker:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/apache-rocketmq:4.9.6
+ container_name: rmqbroker
+ ports:
+ - "10909:10909"
+ - "10911:10911"
+ - "10912:10912"
+ environment:
+ - NAMESRV_ADDR=rmqnamesrv:9876
+ volumes:
+ - ./master/broker.conf:/home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ depends_on:
+ - namesrv
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.81
+ command: sh mqbroker -c /home/rocketmq/rocketmq-4.9.6/conf/broker.conf
+ rmqdashboard:
+ image: registry.cn-shanghai.aliyuncs.com/odboy/rocketmq-dashboard:latest
+ container_name: rocketmq-dashboard
+ ports:
+ - "8080:8080"
+ restart: always
+ depends_on:
+ - namesrv
+ networks:
+ rocketmq:
+ ipv4_address: 172.20.0.82
+ environment:
+ - JAVA_OPTS= -Xms256M -Xms512M -Xmn128M -Drocketmq.namesrv.addr=rmqnamesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
+
diff --git a/Message/rocketmq-4.9.6-standalone/install.sh b/Message/rocketmq-4.9.6-standalone/install.sh
new file mode 100644
index 0000000..943293a
--- /dev/null
+++ b/Message/rocketmq-4.9.6-standalone/install.sh
@@ -0,0 +1 @@
+docker-compose -f docker-compose.yml -p rocketmq up -d
\ No newline at end of file
diff --git a/Message/rocketmq-4.9.6-standalone/master/broker.conf b/Message/rocketmq-4.9.6-standalone/master/broker.conf
new file mode 100644
index 0000000..6394fa8
--- /dev/null
+++ b/Message/rocketmq-4.9.6-standalone/master/broker.conf
@@ -0,0 +1,26 @@
+namesrvAddr=rmqnamesrv:9876
+brokerIP1=172.20.0.81
+brokerName=rmqbroker
+brokerClusterName=rmqbroker
+brokerId=0
+autoCreateTopicEnable=false
+autoCreateSubscriptionGroup=true
+rejectTransactionMessage=false
+fetchNamesrvAddrByAddressServer=false
+storePathRootDir=/home/rocketmq/rocketmq-4.9.6/store
+storePathCommitLog=/home/rocketmq/rocketmq-4.9.6/store/commitlog
+flushIntervalCommitLog=1000
+flushCommitLogTimed=false
+deleteWhen=04
+fileReservedTime=72
+maxTransferBytesOnMessageInMemory=262144
+maxTransferCountOnMessageInMemory=32
+maxTransferBytesOnMessageInDisk=65536
+maxTransferCountOnMessageInDisk=8
+accessMessageInMemoryMaxRatio=40
+messageIndexEnable=true
+messageIndexSafe=false
+haMasterAddress=
+brokerRole=ASYNC_MASTER
+flushDiskType=ASYNC_FLUSH
+cleanFileForciblyEnable=true
diff --git a/Message/rocketmq-4.9.6-standalone/run.md b/Message/rocketmq-4.9.6-standalone/run.md
new file mode 100644
index 0000000..9e4d352
--- /dev/null
+++ b/Message/rocketmq-4.9.6-standalone/run.md
@@ -0,0 +1,100 @@
+# RocketMQ 单实例版
+
+https://rocketmq.apache.org/zh/docs/4.x/quickstart/01quickstart
+
+### 部署方式
+
+```shell
+sh install.sh
+```
+
+### Maven依赖
+
+```xml
+
+
+ org.apache.rocketmq
+ rocketmq-client
+ 4.9.6
+
+```
+
+### 生产者 官方示例
+
+```java
+import org.apache.rocketmq.client.producer.DefaultMQProducer;
+import org.apache.rocketmq.client.producer.SendResult;
+import org.apache.rocketmq.common.message.Message;
+
+public class ProducerExample {
+ public static void main(String[] args) throws Exception {
+ // 创建生产者实例,并设置生产者组名
+ DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
+ // 设置 Name Server 地址,此处为示例,实际使用时请替换为真实的 Name Server 地址
+ producer.setNamesrvAddr("localhost:9876");
+ producer.start();
+
+ try {
+ // 创建消息实例,指定 topic、Tag和消息体
+ Message msg = new Message("TestTopic", "TagA", ("Hello RocketMQ").getBytes());
+ // 发送消息并获取发送结果
+ SendResult sendResult = producer.send(msg);
+ System.out.println("Message sent: " + new String(msg.getBody()));
+ System.out.println("Send result: " + sendResult);
+ } catch (Exception e) {
+ e.printStackTrace();
+ System.out.println("Message sending failed.");
+ } finally {
+ // 关闭生产者
+ producer.shutdown();
+ }
+ }
+}
+```
+
+### 消费者 官方示例
+
+```java
+import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
+import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
+import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
+import org.apache.rocketmq.common.message.MessageExt;
+
+import java.util.List;
+
+public class ConsumerExample {
+ public static void main(String[] args) throws Exception {
+ // 创建消费者实例,并设置消费者组名
+ DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name");
+ // 设置 Name Server 地址,此处为示例,实际使用时请替换为真实的 Name Server 地址
+ consumer.setNamesrvAddr("localhost:9876");
+ // 订阅指定的主题和标签(* 表示所有标签)
+ consumer.subscribe("TestTopic", "*");
+
+ // 注册消息监听器
+ consumer.registerMessageListener(new MessageListenerConcurrently() {
+ @Override
+ public ConsumeConcurrentlyStatus consumeMessage(List msgs, ConsumeConcurrentlyContext context) {
+ for (MessageExt msg : msgs) {
+ System.out.println("Received message: " + new String(msg.getBody()));
+ }
+ return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
+ }
+ });
+
+ // 启动消费者
+ consumer.start();
+ System.out.println("Consumer started.");
+ }
+}
+```
+
+### 访问地址
+
+访问地址:http://192.168.235.104:8080
+
+### 示例
+
+
+
diff --git a/Message/rocketmq-4.9.6-standalone/shutdown.sh b/Message/rocketmq-4.9.6-standalone/shutdown.sh
new file mode 100644
index 0000000..5afab2b
--- /dev/null
+++ b/Message/rocketmq-4.9.6-standalone/shutdown.sh
@@ -0,0 +1 @@
+docker-compose -f docker-compose.yml -p rocketmq down
\ No newline at end of file