Spring Boot 搭配 RocketMQ 使用 (服务搭建以及可视化界面)

服务搭建 & 可视化界面

服务搭建

服务下载地址
解压后进入bin目录

启动nameserver服务:

mqnamesrv.cmd

在这里插入图片描述

启动mqbroker.cmd服务:

mqbroker.cmd -n localhost:9876 autoCreateTopicEnable=true

在这里插入图片描述
服务启动成功!!!
(服务启动成功后再进行下一步可视乎界面配置,因为它需要连接Rocket服务)

可视化界面

源码下载地址

解压后用编译器打开

在这里插入图片描述

可视化的启动端口

在这里插入图片描述

打成Jar包

在这个界面
在这里插入图片描述

执行命令

打包命令

mvn clean package -D maven.test.skip=true

在这里插入图片描述
会自动生成一个targer文件
在这里插入图片描述
点进去执行java运行jar包的命令

java -jar xxx.jar

访问:127.0.0.1:设置的端口
在这里插入图片描述
可视化界面搭建成功

简单入门使用

导入pom文件

        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-client</artifactId>
            <version>4.4.0</version>
        </dependency>

消息发送者

package com.guigu.cloud.rocketMQ;

import org.apache.rocketmq.client.exception.MQBrokerException;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.exception.RemotingException;

public class Provider {
    public static void main(String[] args) throws MQClientException, MQBrokerException, RemotingException, InterruptedException {
        /*消息发送*/
        //1. 创建消息生产者, 指定生产者所属的组名
        DefaultMQProducer producer = new DefaultMQProducer("myproducer-group");
        //2. 指定Nameserver地址
        producer.setNamesrvAddr("127.0.0.1:9876");
        //3. 启动生产者
        producer.start();
        //4. 创建消息对象,指定主题、标签和消息体
        String data = "holle word";
        Message msg = new Message("myTopic", "myTag", data.getBytes());
        //5. 发送消息
        SendResult sendResult = producer.send(msg, 10000);
        System.out.println(sendResult);
        //6. 关闭生产者
        producer.shutdown();
    }
}

消息消费者

package com.guigu.cloud.rocketMQ;

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.client.exception.MQClientException;
import org.apache.rocketmq.common.message.MessageExt;

import java.nio.charset.StandardCharsets;
import java.util.List;

public class Consumer {
    public static void main(String[] args) throws MQClientException {
        /*消息接受*/
        //1. 创建消息消费者, 指定消费者所属的组名
        DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("myproducer-group");
        //2. 指定Nameserver地址
        consumer.setNamesrvAddr("127.0.0.1:9876");
        //3.指定消费者订阅的主题和标签
        consumer.subscribe("myTopic", "myTag");
        //4.设置回调函数,编写处理处理消息的方法
        consumer.registerMessageListener(new MessageListenerConcurrently() {
            @Override
            public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
                                                            ConsumeConcurrentlyContext consumeConcurrentlyContext) {
                for (MessageExt msg : msgs) {
                    String s = new String(msg.getBody(), StandardCharsets.UTF_8);
                    System.out.println(s);
                }
                //返回消费状态
                return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
            }
        });
        //5.启动消费者
        consumer.start();
    }
}

测试效果

启动消息消费者
查看可视化管理器
在这里插入图片描述

然后启动消息发送者
启动成功
查看消息消费者
在这里插入图片描述
成功!!!

整合SpringBoot 使用

导入pom文件

        <dependency>
            <groupId>org.apache.rocketmq</groupId>
            <artifactId>rocketmq-spring-boot-starter</artifactId>
            <version>2.0.2</version>
        </dependency>

消息发送者

编写发送者 application.yml配置文件

server:
  port: 24104

spring:
  application:
    name: rocketmq-provider

rocketmq:
  #  服务器地址
  name-server: 127.0.0.1:9876
  producer:
    #    消息组
    group: provider

编写发送者 Controller

package com.guigu.cloud.controller;

import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Map;

@RestController
@RequestMapping("rocketmq")
public class RocketProviderController {

    @Resource
    private RocketMQTemplate rocketMQTemplate;

    @PostMapping
    public String test(@RequestBody Map<String,Object> map){
        //获取数据
//        String data = (String)map.get("data");
        //发送数据
        rocketMQTemplate.convertAndSend("provider-topic",map);
        return "success";
    }
}


编写发送者 启动类

package com.guigu.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class RocketmqProviderApplication24104 {
    public static void main(String[] args) {
        SpringApplication.run(RocketmqProviderApplication24104.class,args);
    }
}

消息消费者

编写消费者 application.yml配置文件

server:
  port: 7786

spring:
  application:
    name: rocketmq-consumer

rocketmq:
  name-server: 127.0.0.1:9876

编写消费者 监听器

package com.guigu.cloud.listener.impl;

import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.stereotype.Service;

import java.util.Map;

@Service
@Slf4j
/*
  consumerGroup:消息组
  topic:消息话题
 */
@RocketMQMessageListener(consumerGroup = "provider", topic = "provider-topic")
//实现RocketMQ的监听接口
public class RocketMassageImpl implements RocketMQListener<String> {

    @Override
    public void onMessage(String str) {
        Map<String, Object> map = (Map<String, Object>) JSONObject.parse(str);
        log.info("您接受到一条新消息:"+map);
        log.info("姓名:"+map.get("name"));
        log.info("性别:"+map.get("sex"));
        log.info("性别:"+map.get("sql"));
    }
}


编写消费者 启动类

package com.guigu.cloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class RocketmqConsumerApplication7786 {
    public static void main(String[] args) {
        SpringApplication.run(RocketmqConsumerApplication7786.class,args);
    }
}

运行测试

启动消费者&发送者服务
在这里插入图片描述
使用postman测试工具访问发送者的控制层
在这里插入图片描述
查看消费者结果
在这里插入图片描述
成功!!!

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
RocketMQ提供了一个可视化界面来监控和管理消息队列。你可以按照以下步骤使用RocketMQ可视化界面: 1. 下载RocketMQ Console:首先,你需要从RocketMQ的官方GitHub仓库中下载RocketMQ Console的代码。你可以在https://github.com/apache/rocketmq-externals 上找到最新的版本。 2. 编译和运行:将代码下载到本地后,使用Maven编译RocketMQ Console。在终端或命令提示符中,进入RocketMQ Console代码的根目录,并运行以下命令: ``` mvn clean package -Dmaven.test.skip=true ``` 这将编译代码并生成一个可运行的jar文件。 3. 配置和启动:在编译完成后,进入target目录,将生成的jar文件复制到你希望存放RocketMQ Console的目录中。然后,创建一个`application.properties`文件,并根据你的RocketMQ集群配置进行相应的修改。在配置文件中,你需要指定RocketMQ的nameserver地址、配置监听端口等信息。 4. 启动RocketMQ Console:在配置完成后,使用以下命令启动RocketMQ Console: ``` java -jar rocketmq-console-ng-x.x.x.jar ``` 其中,`x.x.x`是你下载的RocketMQ Console的版本号。 5. 访问可视化界面:启动成功后,在浏览器中输入`http://localhost:8080`来访问RocketMQ Console的可视化界面。你将能够查看和管理RocketMQ中的消息队列、主题、消费者等信息。 请注意,RocketMQ Console是一个第三方项目,由社区开发和维护。你可以根据自己的需求进行定制和扩展。如果你在使用中遇到问题,可以参考官方文档或访问RocketMQ社区获取帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值