Windows安装RocketMq的详细教程和springboot中的应用

1:下载rocketMq的安装包

下载后之后,解压到指定的目录,我下载的是4.9.3版本的如图

2:配置环境变量(如图)

3:配置完以后启动

 进入bin目录,然后双击mqnamesrv.cmd启动,如图就启动成功

4:启动broker

使用cmd进入bin目录,然后执行

start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true

成功如图,切记,一定一定要出现后面的127.0.0.1:9876,出不来那么后面使用会报错

5:rocketMq-console可视化工具

下载该压缩包rocketmq-externals-master,然后解压到指定目录如图

然后修改配置文件,进入到如下图的目录然后进行修改。

6:启动可视化工具

cmd进入到rocketmq-console的目录后执行编译命令执行 mvn cleanpackage-Dmaven.test.skip=true  初次执行可能稍等1到3分钟,

执行完成以后 rocketmq-console目录下就会有一个target文件如图

cmd进入到这个目录,然后执行命令 java -jar rocketmq-console-ng-1.0.1.jar 就会出现如下图

出现这样子就说明启动成功了,然后localhost:8888再浏览器访问如下图

在这里说下顺序,首先先启动mqnamesrv.cmd,然后再启动mqbroker,然后再启动可视化工具,

 下面我说下再springboot中的应用
 

 1:打开idea然后新建springboot工程

新建项目-选择sdk然后下一步创建名称和存放的目录,然后点击完成,如下图

 

 

 

 然后再新建模块跟上面创建项目一个流程,创建好就如下图

修改pom.xml文件如下图

 然后再修改模块里面的pom.xml如图,里面需要依赖的包代码也贴上了。

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>rocketMq</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>springbootMq</module>
        <module>TestMq</module>
    </modules>
    <dependencyManagement>
    <dependencies>
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-dependencies</artifactId>
         <version>2.3.12.RELEASE</version>
         <type>pom</type>
         <scope>import</scope>
     </dependency>
    <!--spring cloud alibaba依赖-->

        </dependencies>
    </dependencyManagement>
<profiles>
    <profile>
        <!-- 开发环境 -->
        <id>dev</id>
        <properties>
            <profiles.active>dev</profiles.active>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>

</profiles>

</project>

然后我们再创建包,然后创建类,这里先创建一个生产者的监听类procuderConfig,如下图 代码也贴上了

 

import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author 
 * @version 1.0.0
 * @Description TODO
 * @ClassName MqConfig.java
 * @createTime 2022年05月19日 14:14:00
 */
@Configuration
public class ProcuderConfig {
    @Value("${rocketmq.groupName}")
    private String groupName;

    @Value("${rocketmq.namesrvAddr}")
    private String namesrvAddr;

    @Bean
    public DefaultMQProducer createDefaultMQProducer() {
        DefaultMQProducer producer = new DefaultMQProducer(this.groupName);
        producer.setNamesrvAddr(this.namesrvAddr);
        try {
            producer.start();
            System.out.println("我是一个好人"+String.format("producer is start ! groupName:[%s],namesrvAddr:[%s]", groupName, namesrvAddr));
        } catch (MQClientException e) {
            System.out.println(String.format("producer is error {}", e.getMessage(), e));
        }
        return producer;
    }

}

 然后我们创建一个controller类如下图,代码随后贴上

package mq.cn.springboot;


import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.common.message.Message;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.nio.charset.StandardCharsets;

/**
 * @author 
 * @version 1.0.0
 * @Description TODO
 * @ClassName ProcuderController.java
 * @createTime 2022年05月19日 14:49:00
 */
@RestController
public class ProcuderController {
    /**
     * 不能发一次消息,换一次 group ,因此 DefaultMQProducer 需要注入 ,主要作用是说明 procuder 的身份
     */
    @Autowired
    private DefaultMQProducer defaultMQProducer;

    @Value("${rocketmq.topic}")
    private String topic;

    @GetMapping("/send-message")
    public String sendMessage() {

        for (int i = 0; i < 1; i++) {
            Message message = new Message(this.topic, "springboot 整合 rocketmq 发送的消息".getBytes());
            try {
                defaultMQProducer.send(message);
            } catch (Exception e) {
                e.printStackTrace();
                System.out.println(String.format("producer is error {}", e.getMessage(), e.getStackTrace()));
            }
        }
        return "OK,success";
    }

}

 以上是生产者的创建,下面我们来创建消费者的类

2:创建一个消费者的监听ConsumerConfig类如下图,代码也贴上了

package mq.cn.springboot;

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 org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.List;

/**
 * @author 
 * @version 1.0.0
 * @Description TODO
 * @ClassName ConsumerConfig.java
 * @createTime 2022年05月19日 14:48:00
 */
@Configuration
public class ConsumerConfig {


        @Value("${rocketmq.namesrvAddr}")
        private String namesrvAddr;

        @Value("${rocketmq.groupName}")
        private String groupName;

        @Value("${rocketmq.topic}")
        private String topic;

        @Bean
        public DefaultMQPushConsumer getRocketMQConsumer() throws Exception {
            DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(groupName);
            consumer.setNamesrvAddr(namesrvAddr);
            consumer.subscribe(this.topic, "*");
            consumer.registerMessageListener(new MessageListenerConcurrently() {
                @Override
                public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
                    for (MessageExt msg : msgs) {
                        System.out.println("message body:" + new String(msg.getBody()));
                    }
                    return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
                }
            });
            consumer.start();
            return consumer;
        }

}

 然后我们再创建springboot的启动类如图,代码也贴上

package mq.cn;




import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Import;


/**
 * @author 
 * @version 1.0.0
 * @Description TODO
 * @ClassName MqApplication.java
 * @createTime 2022年05月19日 14:06:00
 */
@SpringBootApplication(exclude = SecurityAutoConfiguration.class)

@EnableDiscoveryClient
@EnableFeignClients
public class MqApplication {
    public static void main(String[] args) {
        SpringApplication.run(MqApplication.class, args);
    }
    //启动类接着声明一个负载均衡的请求器@LoadBalanced,还有请求发起的工具RestTemplate



}

 然后创建一个配置文件,如下图,内容我都贴上

## 服务名称
spring:
   application:
          name: rocketmq
  ## 端口号
server:
   port: 8081

  ## rocketmq 的 nameServer
rocketmq:
  namesrvAddr: 127.0.0.1:9876
  topic: TopicTest
  ## 使用服务名称作为创建 DefaultMQProducer 中的 group
  groupName: ${spring.application.name}

然后就可以启动工程了,启动成功的如下图

然后再浏览器访问

http://localhost:8081/send-message

如图,然后控制台会打印出消费者收到的消息如图

 

然后我们再mq的可视化工具界面就可以看到收到的消息,如图

 

就到这里,不懂的留言,一起交流it知识,我也是菜菜鸟 

 

 

 

  • 16
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值