RocketMQ-后台监控和HelloWorld

使用RocketMQ命令查看集群和topic信息较麻烦,可借助web项目管理。本文针对不同版本RocketMQ介绍搭建监控平台的方法,包括下载、打包、部署、配置等步骤,还给出HelloWorld代码进行测试,展示了Producer和Consumer执行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用RocketMQ命令来查看集群状态,查看topic信息时是比较麻烦的,而且非常的不直观,功能不全面。这个时候,我们可以使用一些web项目来管理rocketmq。

因为我使用的RocketMQ版本是3.2.6,也是阿里将RocketMQ贡献给apache开源社区前的版本。所以我使用的是一个老版本的工具。如果你的是贡献之后的版本,可以参考下面的网址来搭建监控平台。

搭建贡献之后版本的监控平台

开始搭建:

1、首先到这个百度网盘连接去下载压缩包,解压后import到MyEclipse等等ide打包成war包。

https://pan.baidu.com/s/1mhM0cDM

 

2、然后将war包放到linux下安装的tomcat的webapps下。(注意:记得安装好JDK和Tomcat)

3、修改Config.properties文件。第一,我们可以等Tomcat启动时将war解压后再修改,第二,我们直接自己解压修改就好了。

4、当然是自己解压修改了。

创建一个文件夹来存放解压后的项目
# mkdir /usr/locla/apache-tomcat-9.0.10/webapps/rocketmq-console
解压war包
# unzip xxx.war -d rocketmq-console/
修改Config.properties
# vim rocket-console/WEB-INF/classes/config.properties

5、修改rockemq.namesrv.addr,记得带上端口号9876:

6、启动tomcat

# /usr/local/apache-tomcat-9.0.10/bin/startup.sh

7、如果我们已经开启了RocketMQ的集群,就能看到类似下面的信息了:

8、上个HelloWorld的代码测试一下RocketMQ:

Producer:

public class Producer {
	public static void main(String[] args) throws Exception {
		
		DefaultMQProducer producer = new DefaultMQProducer("quickstart_producer");
		
		//绑定nameserver的ip地址
		producer.setNamesrvAddr("192.168.1.111:9876;192.168.1.112:9876");
		
		//启动
		producer.start();
		System.out.println("producer start....");
		
		for(int i=1;i<=100;i++){
			Message msg = new Message();
			msg.setTopic("TopicQuickStart"); //消息主题
			msg.setTags("TagA"); //消息主题标签,一个主题能有多个标签
			msg.setBody(("Hello world"+i).getBytes()); //消息主体
			SendResult sendResult = producer.send(msg);
			System.out.println(sendResult); //sendResult包含messageId....等信息
		}
		
		//最后记得释放producer
		producer.shutdown();
	}
}

Consumer:

public class Consumer {
	public static void main(String[] args) throws MQClientException {
		DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("quickstart_consumer");
		consumer.setNamesrvAddr("192.168.1.111:9876;192.168.1.112:9876");
		/**
		 * 设置Consumer第一次启动是从队列头部开始消费还是队列尾部开始消费
		 * 如果非第一次启动,那么按照上次消费的位置继续消费
		 */
		consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
		/**
		 * 第一个参数是主题名称
		 * 第二个参数是主题标签表达式:*表示所有。如果是多个可以这么写:tagA||tagB
		 */
		consumer.subscribe("TopicQuickStart", "*");
		
		/**
		 * 添加监听器来消费消息(批量消费)
		 * consumer可以设置一次消费多少条
		 */
		consumer.registerMessageListener(new MessageListenerConcurrently() {
			
			@Override
			public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> messages, ConsumeConcurrentlyContext context) {
				try {
					for(MessageExt msg : messages){
						String topic = msg.getTopic();
						String tags = msg.getTags();
						String body = new String(msg.getBody(),"utf-8");
						System.out.println("收到的消息:"+topic+" "+tags+" "+body);
					}
				} catch (Exception e) {
					e.printStackTrace();
					//失败的话稍后再给Consumer发送消息
					return ConsumeConcurrentlyStatus.RECONSUME_LATER;
				}
				
				//返回标识:成功
				return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
			}
		});
		consumer.start(); //最后记得启动
		System.out.println("Consumer start.....");
	}
}

9、执行Producer:

可以发现,数据不定向地往两个Master里头放。做到了负载均衡了。

后台也能看到数据了。

我们还可以根据返回数据的msgid到后台查看消息的详细数据。

10、执行Consumer:

控制台也打印了被消费的消息了

再看看后台:

 

 

 

`rocketmq-spring-boot-starter` `rocketmq-client-java` 是 Apache RocketMQ 提供的两个不同层次的客户端工具,分别适用于不同的应用场景开发框架。以下是两者的主要区别特点: ### 1. 定位适用场景 `rocketmq-client-java` 是 RocketMQ 的原生 Java 客户端库,提供了对 RocketMQ 所有核心功能的访问接口,包括消息的发送、消费、事务消息、延迟消息等。它适用于任何 Java 项目,尤其是那些没有使用 Spring Boot 框架的项目。开发者需要手动配置管理 Producer、Consumer、NameServer 地址等参数,并处理底层的连接异常[^1]。 `rocketmq-spring-boot-starter` 是基于 `rocketmq-client-java` 的封装,专为 Spring Boot 项目设计。它通过 Spring Boot 的自动配置机制简化了 RocketMQ 客户端的集成,使得开发者可以通过简单的配置文件(如 `application.yml` 或 `application.properties`)完成 RocketMQ 的初始化使用。它更适合在 Spring Boot 项目中快速集成 RocketMQ 功能,减少了手动配置管理的复杂性[^2]。 ### 2. 使用方式配置 在使用 `rocketmq-client-java` 时,开发者需要手动编写代码来创建管理生产者(`DefaultMQProducer`)消费者(`DefaultMQPushConsumer`)实例,并在代码中指定 NameServer 地址、主题(Topic)、标签(Tag)等参数。例如: ```java DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName"); producer.setNamesrvAddr("127.0.0.1:9876"); producer.start(); ``` 而在 `rocketmq-spring-boot-starter` 中,这些配置可以通过 `application.yml` 文件完成: ```yaml rocketmq: producer: group: my-group namesrv-addr: 127.0.0.1:9876 ``` 同时,可以通过注入 `RocketMQTemplate` 来直接发送消费消息,无需手动管理底层资源: ```java @Autowired private RocketMQTemplate rocketMQTemplate; rocketMQTemplate.convertAndSend("test-topic", "Hello RocketMQ"); ``` 这种方式极大地简化了 RocketMQ 在 Spring Boot 项目中的集成流程[^3]。 ### 3. 功能支持 `rocketmq-client-java` 提供了完整的 RocketMQ 功能支持,包括同步发送、异步发送、单向发送、拉取模式、事务消息等。开发者可以根据需求灵活地使用这些功能。 `rocketmq-spring-boot-starter` 在此基础上进行了封装,虽然也支持大部分常用功能,但某些高级特性可能需要通过自定义配置或扩展实现。例如,在某些版本中可能存在对事务消息支持不完善的情况,或者需要额外的依赖配置来启用特定功能[^4]。 ### 4. 版本兼容性 由于 `rocketmq-spring-boot-starter` 是基于 `rocketmq-client-java` 的封装,因此其版本通常与 RocketMQ 核心客户端版本保持一致或存在一定的依赖关系。在使用时需要注意版本匹配问题,尤其是在 Spring Boot 3.x 等新版本框架中,可能会出现兼容性问题,需要选择合适的 starter 版本[^5]。 ### 5. 适用框架 `rocketmq-client-java` 适用于所有 Java 项目,包括传统的 Spring Framework 项目、Java EE 项目以及非 Spring 项目。 `rocketmq-spring-boot-starter` 则专为 Spring Boot 项目设计,提供了与 Spring Boot 生态系统的良好集成,如自动配置、依赖注入、健康检查等功能。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值