黄冈网站建设收费,高端房产网站建设,在线生成短链接网址,网站的建设方法有哪些1.拉取RocketMQ镜像 这里以dockerhub上 RocketMQ 5.2.0版本的镜像为例#xff0c;介绍部署过程。
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq:5.2.02.创建容器共享网络 RocketMQ 中有多个服务#xff0c;需要创建多个容器#xff0c;创建 docke…1.拉取RocketMQ镜像 这里以dockerhub上 RocketMQ 5.2.0版本的镜像为例介绍部署过程。
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq:5.2.02.创建容器共享网络 RocketMQ 中有多个服务需要创建多个容器创建 docker 网络便于容器间相互通信。
docker network create rocketmq3.启动NameServer
启动 NameServer
docker run -d --name rmqnamesrv -p 9876:9876 --network rocketmq apache/rocketmq:5.2.0 sh mqnamesrv验证 NameServer 是否启动成功
docker logs -f rmqnamesrv4.启动 BrokerProxy
配置 Broker 的IP地址
echo “brokerIP1127.0.0.1” broker.conf
启动 Broker 和 Proxy
docker run -d \
--name rmqbroker \
--network rocketmq \
-p 10912:10912 -p 10911:10911 -p 10909:10909 \
-p 8080:8080 -p 8081:8081 \
-e NAMESRV_ADDRrmqnamesrv:9876 \
-v ./broker.conf:/home/rocketmq/rocketmq-5.2.0/conf/broker.conf \
registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq:5.2.0 sh mqbroker --enable-proxy \
-c /home/rocketmq/rocketmq-5.3.0/conf/broker.conf验证 Broker 是否启动成功
docker exec -it rmqbroker bash -c tail -n 10 /home/rocketmq/logs/rocketmqlogs/proxy.log5.SDK测试消息收发 工具测试完成后我们可以尝试使用 SDK 收发消息。这里以 Java SDK 为例介绍一下消息收发过程可以从 rocketmq-clients 中参阅更多细节。
在IDEA中创建一个Java工程。
在 pom.xml 文件中添加以下依赖引入Java依赖库将 rocketmq-client-java-version 替换成 最新的版本. dependencygroupIdorg.apache.rocketmq/groupIdartifactIdrocketmq-client/artifactIdversion5.2.0/version/dependency注意 镜像是5.2.0 那么 依赖也必须是5.2.0
进入broker容器通过mqadmin创建 Topic。
$ docker exec -it rmqbroker bash
$ sh mqadmin updatetopic -t TestTopic -c DefaultCluster在已创建的Java工程中创建发送普通消息程序并运行示例代码如下 import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.Message;public class RocketMQProducer {public static void main(String[] args) {// 创建一个生产者DefaultMQProducer producer new DefaultMQProducer(ProducerGroupName);try {// 设置 NameServer 的地址producer.setNamesrvAddr(localhost:9876);producer.start();// 创建消息Message msg new Message(TopicTest, TagA, KeyA, Hello RocketMQ.getBytes());// 发送消息producer.send(msg);System.out.println(Message sent: new String(msg.getBody()));} catch (Exception e) {e.printStackTrace();} finally {// 关闭生产者producer.shutdown();}}
}
在已创建的Java工程中创建订阅普通消息程序并运行。Apache RocketMQ 支持SimpleConsumer和PushConsumer两种消费者类型您可以选择以下任意一种方式订阅消息。
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import org.apache.rocketmq.common.message.MessageExt;public class RocketMQConsumer {public static void main(String[] args) {// 创建一个消费者DefaultMQPushConsumer consumer new DefaultMQPushConsumer(ConsumerGroupName);try {// 设置 NameServer 的地址consumer.setNamesrvAddr(localhost:9876);consumer.subscribe(TopicTest, *); // 订阅主题和标签// 注册消息监听器consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) - {for (MessageExt msg : msgs) {System.out.println(Message received: new String(msg.getBody()));}return null; // 返回 null 表示消费成功});// 启动消费者consumer.start();System.out.println(Consumer started);} catch (Exception e) {e.printStackTrace();}}
}停止容器 完成实验后我们可以通过以下方式停止容器。
停止 NameServer 容器
docker stop rmqnamesrv停止 Broker 容器
docker stop rmqbrokerdocker 镜像安装rocketmq-dashboard
安装docker拉取 rocketmq-dashboard 镜像
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq-dashboard:latestdocker 容器中运行 rocketmq-dashboard
docker run -d --name rocketmq-dashboard -e JAVA_OPTS-Drocketmq.namesrv.addr127.0.0.1:9876 -p 8080:8080 -t registry.cn-hangzhou.aliyuncs.com/qiluo-images/rocketmq-dashboard:latestnamesrv.addr:port 替换为 rocketmq 中配置的 nameserver 地址端口号
开放端口号808098761091111011 端口
云服务器设置安全组访问规则 本地虚拟机关闭防火墙或 -add-port
源码安装
源码地址apache/rocketmq-dashboard
下载并解压切换至源码目录 rocketmq-dashboard-master/
① 编译 rocketmq-dashboard
① 编译 rocketmq-dashboard
$ mvn clean package -Dmaven.test.skiptrue运行 rocketmq-dashboard
$ java -jar target/rocketmq-dashboard-1.0.1-SNAPSHOT.jar示Started App in x.xxx seconds (JVM running for x.xxx) 启动成功
浏览器页面访问namesrv.addr:8080
关闭 rocketmq-dashboard : ctrl c
再次启动执行 ②
tips下载后的源码需要上传到 Linux 系统上编译本地编译可能会报错。