RocketMQ安装和基本使用

环境要求

  1. Linux 64位操作系统 64bit
  2. JDK 1.8+

安装RocketMQ

  1. 下载地址
  2. 上传文件到linux系统并解压

启动RocketMQ

  1. 切换到安装目录
    [root@heima rocketmq]# ls
    benchmark bin conf lib LICENSE NOTICE README.md

  2. 启动NameServer
    nohup ./bin/mqnamesrv &
    只要进程不报错,就应该是启动成功了,可以查看一下日志
    tail -f /root/logs/rocketmqlogs/namesrv.log

  3. 启动Broker
    修改系统配置文件 bin/runbroker.sh 和 bin/runserver.sh 的启动大小
    JAVA_OPT= ${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g
    JAVA_OPT= ${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m

    修改 conf/broker.conf 文件 在末尾添加 XXXX 为当前服务器ip或者外网ip
    namesevAddr = XXXX:9876
    brokerIP1 = XXXX

    指定配置文件和ip地址启动
    nohup bin/mqbroker -c conf/broker.conf -n XXXX:9876 &
    只要进程不报错,就应该是启动成功了,可以查看一下日志
    tail -f /root/logs/rocketmqlogs/broker.log

测试RocketMQ

  1. 测试消息发送
    开启两个服务器界面
界面1   执行:
      			export NAMESRV_ADDR=localhost:9876
      			bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
如果报错的话,修改   bin/tools.sh  的启动大小

界面2   执行:
				export NAMESRV_ADDR=localhost:9876
				bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
出现数据则测试成功

关闭RocketMQ

bin/mqshutdown broker
bin/mqshutdown namesrv

RocketMQ控制台安装

1.linux 需要开放端口    9876  10909 19911 三个端口  

2 下载地址
注:只需要下载其中 rocketmq-connect-console 模块

3. 修改配置文件  rocketmq-console\src\main\resources\application.properties 
	server.port=7777 #项目启动后的端口号 
	rocketmq.config.namesrvAddr=192.168.109.131:9876 #nameserv的地址
4. 打成jar包,并启动
	# 进入控制台项目,将工程打成jar包
	mvn clean package -Dmaven.test.skip=true # 启动控制台
	java -jar target/rocketmq-console-ng-1.0.0.jar
5.访问控制台
	localhost:7777

Java整合rocketMQ

1. 引入依赖
		<!--rocketMq依赖-->
        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
        </dependency>

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

/**
* 生产者
*/
public class RocketMQSendMessageTest{

    public static void main(String[] args) throws Exception{

        //1.创建消息身缠这,并设置生产组名
        DefaultMQProducer producer = new DefaultMQProducer("myproducer-group");

        producer.setInstanceName(RunTimeUtil.getRocketMqUniqeInstanceName());

        //2.为生产者设置NameServer的地址
        producer.setNamesrvAddr("192.168.74.129:9876");

        //3.启动生产者
        producer.start();

        //4.构建消息对象,主要是设置消息的主题,标签,内容
        Message message = new Message("myTopic", "myTag", ("Test RocketMq Message").getBytes());

        //5.发送消息
        SendResult send = producer.send(message, 1000);
        System.out.println(send);

        //6.关闭生产者
        producer.shutdown();

    }
}


package com.cjs.order.test;

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;

/**
 * help工具类
 */
public class RunTimeUtil {
    private static AtomicInteger index = new AtomicInteger();
    public static int getPid() {
        String info = getRunTimeInfo();
        int pid = (new Random()).nextInt();
        int index = info.indexOf("@");
        if(index > 0) {
            pid = Integer.parseInt(info.substring(0, index));
        }
        return pid;
    }
    public static String getRunTimeInfo() {
        RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
        String info = runtime.getName();
        return info;
    }
    public static String getRocketMqUniqeInstanceName() {
        return "pid" + getPid() + "_index" + index.incrementAndGet();
    }
}


package com.cjs.order.test;

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;

/**
 * 接受,订阅消息
 * @author cjs
 * @version 1.0
 * @date 2020-06-22 16:24
 */
public class RocketMQReceiveMessageTest {

    public static void main(String[] args) throws Exception {
        //1.创建消费者,并且为其指定消费者组名
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("myproducer-group");

        //2.为消费者设置nameServer的地址
        consumer.setNamesrvAddr("192.168.74.129:9876");

        //3.指定消费者订阅的主题和标签
        consumer.subscribe("myTopic","*");

        //4.设置一个回调函数,并在函数中编写接受到消息之后的处理方式
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> list, ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                //消费逻辑
                System.out.println("Message==>" + list);

                //返回消费成功状态
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });

        //5.启动消费者
        consumer.start();
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值