栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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如图,里面需要依赖的包代码也贴上了。

 




    
        org.springframework.boot
        spring-boot-starter-parent
        2.3.12.RELEASE
    
    4.0.0

    org.example
    rocketMq
    pom
    1.0-SNAPSHOT
    
        springbootMq
        TestMq
    
    
    
    
         org.springframework.boot
         spring-boot-dependencies
         2.3.12.RELEASE
         pom
         import
     
    

        
    

    
        
        dev
        
            dev
        
        
            true
        
    



然后我们再创建包,然后创建类,这里先创建一个生产者的监听类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;


@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;


@RestController
public class ProcuderController {
    
    @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;


@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 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;



@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知识,我也是菜菜鸟 

 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/919481.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号