RocketMQ安装到简单示例

本文详细介绍RocketMQ 3.2.6版本在Windows下的安装步骤,包括NameServer和Broker的启动过程。同时,提供了简单的生产者与消费者代码示例,演示如何发送和接收消息。

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

一、安装及启动(此处以windows安装示例,版本为3.2.6)

二、启动代码示例

 

一、安装及启动

由于官网资源4.0版本之前的都找不到了,因此用到的3.2.6版本为csdn下载。

简介:

²  Name Server 是一个几乎无状态节点,可集群部署,节点之间无任何信息同步

²  Broker 部署相对复杂,Broker 分为 Master 不 Slave,一个Master 可以对应多个 Slave,但是一个 Slave 只能对应一个Master,Master不Slave的对应关系通过指定相同的BrokerName,不同的BrokerId来定义,BrokerId为 0 表示Master,非 0 表示 Slave。Master 也可以部署多个。每个 Broker与Name Server 集群中的所有节点建立长连接,定时注册 Topic 信息到所有 Name Server。

²  Producer与Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从 Name Server 获取Topic 路由信息,并且提供 Topic 服务的 Master 建立长连接,定时向Master 发送心跳。Producer 完全无状态,可集群部署。

²  Consumer与Name Server 集群中的其中一个节点(随机选择)建立长连接,定期从 Name Server 获取Topic 路由信息,并向提供 Topic 服务的 Master、Slave建立长连接,且定时向 Master、Slave 发送心跳。Consumer既可以从 Master 订阅消息,也可以从 Slave 订阅消息,订阅规则由 Broker 配置决定。

name serve起到有个路由的作用,消费者和生产者根据name serve找到消息存储的broker地址。

消息存储模型消息主体以及元数据都存储在CommitLog当中,Consume Queue是一个逻辑队列。此篇不做详解。

安装:rocketmq3.2.6版本。本机jdk版本为1.7/

首先解压rocketmq3.2.6压缩包,打开bin目录。

双击mqnamesrv.exe,启动name server,保持mqnamesrv.exe运行。

在目录路径输入cmd回车打开cmd。在窗口界面输入命令:mqbroker -n ip:端口启动broker。

二、代码示例

简单的生产消息与消费消息

//声明并初始化一个producer
        //需要一个producer group名字作为构造方法的参数,
    	DefaultMQProducer producer = new DefaultMQProducer("example11");
    	//设置NameServer地址,此处应改为实际NameServer地址,多个地址之间用;分隔
        //NameServer的地址必须有,但是也可以通过环境变量的方式设置,不一定非得写死在代码里
    	
        //在本地搭建好broker后,记得指定nameServer的地址
        producer.setNamesrvAddr("127.0.0.1:9876");
      //调用start()方法启动一个producer实例。切记不用每条消息都启动
        producer.start();
        try {
        	for (int i = 0; i < 10; i++) {
        		Thread.sleep(5000); //每5秒发送一次MQ
        		Message msg = new Message("TopicAAA",// topic
        				"TagAA",// tag
        				(new Date() + "my first rocket++" + i).getBytes()// body
        				);
        		SendResult sendResult = producer.send(msg);
        	}
        } catch (Exception e) {
        	e.printStackTrace();
        }

//关闭
   producer.shutdown();

消息生产者代码示例如上。

消息消费者代码如下:

DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_4");
        /**
         * 设置Consumer第一次启动是从队列头部开始消费还是队列尾部开始消费<br>
         * 如果非第一次启动,那么按照上次消费的位置继续消费
         */
        consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);

        //在本地搭建好broker后,记得指定nameServer的地址
        consumer.setNamesrvAddr("127.0.0.1:9876");
        consumer.setInstanceName("consumer");
        consumer.subscribe("TopicAAA-test", "TagAA");

        consumer.registerMessageListener(new MessageListenerConcurrently() {
        	@Override
        	public ConsumeConcurrentlyStatus consumeMessage(
        			List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
        		for (MessageExt msg : msgs) {
        			System.out.println(new String(msg.getTopic()));
        			System.out.println(new String(msg.getTags()));
        			System.out.println("=== " + new String(msg.getBody()));
        		}

        		return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
        	}
        });
        consumer.start();
        System.out.println("Consumer Started.");

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值