rocketMq4.3.0版本的安装配置及使用

rocketMq4.3.0版本的安装配置及使用

    闲话不多说,直接进入正题。看下面:

一、下载安装

官网地址http://rocketmq.apache.org/release_notes/release-notes-4.3.0/,点击Resource后的链接地址就可以下载了。下载后放到/usr/local路径下,如下图所示:
在这里插入图片描述

进入到rocketmq-all-4.3.0/distribution/target/apache-rocketmq/bin如下路径,先来跟我一起修改两个配置文件。打开runserver.sh这个文件,看到下图红色框处所示。我已经将原本的4g改小了。这是分配给Java运行时环境的内存。如果你的机器没那么大内存,那么就会报错。在这里插入图片描述

另外一个文件是runbroker.sh文件,同样用vi编辑文件,下图是我改过的分配内存大小。具体你是要改大还是由你需求决定。
在这里插入图片描述

下图给出的是因内存不足报错的截图,看到这个错误我想应该知道怎么解决了。
在这里插入图片描述

二、启动服务

1、在启动服务前先修改一个配置文件。进入到rocketmq-all-4.3.0/distribution/target/apache-rocketmq/conf路径下。打开broker.conf文件,在最后一行加上如下图红框处所示配置。将下图中的106.12.108.183改为你服务器的ip。
在这里插入图片描述

2、进入到rocketmq-all-4.3.0/distribution/target/apache-rocketmq/bin路径下,输入nohup ./mqnamesrv -n ip:9876 &,将ip改为你服务器的ip地址。这样nameserver服务就启动了。输入jps会看到有个NamesrvStartup服务。在这里插入图片描述

3、接下来启动broker,还是在这个路径下输入nohup sh mqbroker -n ip:9876 -c ../conf/broker.conf autoCreateTopicEnable=true > borker.out &来启动broker。将ip改为你服务器的ip地址。我来解释一下这句话,使用nohup来让程序在后台运行。使用sh命令启动mqbroker这个文件。-n指定broker受哪个nameserver管理。ip:9876就是nameserver的地址啦。-c指定启动broker的配置文件。autoCreateTopicEnable=true指当topic不存在时,会默认创建,线上一般是false,就是说你第一次部署rocketmq,然后往里丢消息,此时你指定的topic是不存在的,那么就会创建这个topic。如果autoCreateTopicEnable为false,那么就会出现No route info of this topic错误,默认为false。
在这里插入图片描述

4、此时应该都启动成功了,输入jps会看到NamesrvStartup、BrokerStartup两个服务。
在这里插入图片描述

三、使用

1、打开你的ide,创建一个maven项目。然后在pom文件加入如下依赖。

	<!-- rocketmq客户端所需依赖 -->
    <dependency>
        <groupId>org.apache.rocketmq</groupId>
        <artifactId>rocketmq-client</artifactId>
        <version>4.3.0</version>
    </dependency>

2、创建一个名为Producer的java类,代码如下:

import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;

public class Producer {
	public static void main(String[] args) throws Exception {
		// 创建一个producer。名为group
		DefaultMQProducer producer = new DefaultMQProducer("group");
		// 指定nameserver的地址
		producer.setNamesrvAddr("106.12.108.183:9876");
		// 启动服务
		producer.start();
		for(int i=1;i<=10;i++) {
			// 创建消息,orders为topic,相当于给消息分类,("order"+i).getBytes()为消息实体
			Message message = new Message("orders",("order"+i).getBytes());
			// 发送消息
			SendResult result = producer.send(message);
			System.out.println(result);
			System.out.println(message + "send out");
			Thread.sleep(500);
		}
		// 关闭服务
		producer.shutdown();
	}
}

3、在创建一个名为Consumer的java类,代码如下:

import java.util.List;
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.client.exception.MQClientException;
import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
import org.apache.rocketmq.common.message.MessageExt;

public class Consumer {
	public static void main(String[] args) {
		
		// 创建consumer,名为consumer
		DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumer");
		// 指定nameserver的地址
		consumer.setNamesrvAddr("106.12.108.183:9876");
		try {
			// 设置要订阅的消息,orders为topic,*为该topic下的所有消息
			consumer.subscribe("orders", "*");
			// 设置消费位
			consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
			consumer.registerMessageListener(new MessageListenerConcurrently() {
			    @Override
			    public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
					// 通过getBody()输出消息实体内容
			        System.out.printf(Thread.currentThread().getName() + "收到新消息:" + new String(msgs.get(0).getBody()) + "%n");
			        return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
			    }
			});
			// 开启服务
			consumer.start();
		} catch (MQClientException e) {
			e.printStackTrace();
		}
		// 关闭服务
		consumer.shutdown();
	}
}

4、先启动Consumer,再启动Producer,因为DefaultMQPushConsumer是来一条消息接收一条,所以先启动Consumer。最后你看到的控制台的内容应该如下图所示:

Producer:
在这里插入图片描述

Consumer:
在这里插入图片描述

四、总结

关于rocketmq的介绍就到这了哦,后续如果有更多发现会持续更新,博文中有不全或不足的地方非常欢迎大家指正,有不懂的地方请留言,我会每天查看,如看到会尽快回复,谢谢大家!

发布了25 篇原创文章 · 获赞 58 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/student_zz/article/details/91359008