RocketMQ在windows系统上安装部署流程

一、RocketMQ的安装配置

1.安装环境(windows)

①JDK1.7以上版本;②Maven;③Git(非必需)

2.下载RocketMQ(官网http://rocketmq.apache.org/release_notes/release-notes-4.2.0/)

(点击下载后将会提示使用镜像链接下载)

此处下载"Binary"版本("Binary"版本为已编译过的"class"文件,"Source"为未编码的源文件)

3.解压后配置系统环境变量ROCKETMQ_HOME(变量值为解压目录)

4.启动Name Server和Broker

进入.\bin目录,执行"start mqnamesrv.cmd",执行成功后执行"start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true"

将会跳出两个窗口,均保持打开状态.

至此安装成功

二、RocketMQ后台管理工具配置

1,下载rocketmq-externals工具包,可以从git直接拉取,也可从githup上进行下载

地址:https://github.com/apache/rocketmq-externals.git

2.下载完成之后,进入‘rocketmq-externals\rocketmq-console\src\main\resources’文件夹,打开‘application.properties’进行配置。

说明:

server.port指通过浏览器访问RocketMQ图形管理界面的端口(此处可根据需要进行修改,默认的8080一般与Tomcat冲突)namesrvAddr指nameServer绑定的地址和端口(此处一般固定设置)

配置完成后进入‘\rocketmq-externals\rocketmq-console’文件夹,执行‘mvn clean package -Dmaven.test.skip=true’,编译生成。

编译成功之后,Cmd进入‘target’文件夹,执行‘java -jar rocketmq-console-ng-1.0.0.jar’,启动‘rocketmq-console-ng-1.0.0.jar’。

启动成功后,保持住窗口,打开浏览器访问127.0.0.1:8082(端口为之前设置的端口)

三、本地Demo

生产者代码:

import com.alibaba.rocketmq.client.exception.MQClientException;
import com.alibaba.rocketmq.client.producer.DefaultMQProducer;
import com.alibaba.rocketmq.client.producer.SendResult;
import com.alibaba.rocketmq.common.message.Message;

public class Producer {
	public static void main(String[] args) throws MQClientException, InterruptedException {

        //声明并初始化一个producer
        //需要一个producer group名字作为构造方法的参数,这里为producer1
        DefaultMQProducer producer = new DefaultMQProducer("producer1");
        
        //设置NameServer地址,此处应改为实际NameServer地址,多个地址之间用;分隔
        //NameServer的地址必须有,但是也可以通过环境变量的方式设置,不一定非得写死在代码里
        producer.setNamesrvAddr("10.50.20.167:9876");
        
        //调用start()方法启动一个producer实例
        producer.start();

        //发送10条消息到Topic为TopicTest,tag为TagA,消息内容为“Hello RocketMQ”拼接上i的值
        for (int i = 0; i < 10; i++) {
            try {
                Message msg = new Message("TopicTest",// topic
                        "TagA",// tag
                        ("Hello RocketMQ ,QuickStart" + i)
                        .getBytes()// body
                );
                
                //调用producer的send()方法发送消息
                //这里调用的是同步的方式,所以会有返回结果
                SendResult sendResult = producer.send(msg);
                
                //打印返回结果,可以看到消息发送的状态以及一些相关信息
                System.out.println(sendResult);
            } catch (Exception e) {
                e.printStackTrace();
                Thread.sleep(1000);
            }
        }

        //发送完消息之后,调用shutdown()方法关闭producer
        producer.shutdown();
    }
}

消费者代码:

import java.util.List;

import com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer;
import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import com.alibaba.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import com.alibaba.rocketmq.client.consumer.listener.MessageListenerConcurrently;
import com.alibaba.rocketmq.client.exception.MQClientException;
import com.alibaba.rocketmq.common.message.MessageExt;

public class Consumer {
	public static void main(String[] args) throws MQClientException {
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(
                "rmq-group");

        consumer.setNamesrvAddr("10.50.20.167:9876");
        consumer.setInstanceName("consumer");
        consumer.subscribe("TopicTest", "TagA");

        consumer.registerMessageListener(new MessageListenerConcurrently() {
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
                for (MessageExt msg : msgs) {
                    System.out.println(new String(msg.getBody()));
                }
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        consumer.start();
        System.out.println("Consumer Started.");
    }
}

此处,所需的jar包可以自行导入,也可通过maven的pom.xml添加依赖如下:

<dependencies>
		<dependency>
			<groupId>com.alibaba.rocketmq</groupId>
			<artifactId>rocketmq-client</artifactId>
			<version>3.0.10</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba.rocketmq</groupId>
			<artifactId>rocketmq-all</artifactId>
			<version>3.0.10</version>
			<type>pom</type>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-classic</artifactId>
			<version>1.1.1</version>
		</dependency>
		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-core</artifactId>
			<version>1.1.1</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.10</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

运行成功后生产者和消费者结果如下:

至此,RocketMQ的部署和本地Demo测试完成。

部分资料来自https://blog.csdn.net/hsl_1990_08_15/article/details/80077552

猜你喜欢

转载自blog.csdn.net/noob_Cliam/article/details/85341773