Java项目集成RocketMQ

1.调整MQ的配置

1.进入bin目录
cd /usr/local/soft/rocketmq-all-4.8.0-bin-release/bin
2.关闭broker和namesrv
sh mqshutdown broker && sh mqshutdown namesrv

CleanShot 2024-07-12 at 12.20.25@2x

3.查看进程确认关闭
ps -ef | grep NamesrvStartup && ps -ef | grep BrokerStartup

CleanShot 2024-07-12 at 12.21.38@2x

4.编辑配置文件broker.conf,配置brokerIP1
vim /usr/local/soft/rocketmq-all-4.8.0-bin-release/conf/broker.conf
# NameServer 地址(开端口)
namesrvAddr=

# brokerIP1 指定了 Broker 对外提供服务的 IP 地址
brokerIP1=

# listenPort 指定了 Broker 监听客户端连接的端口(开端口)
listenPort=10911

# 当这个选项设置为 true 时,如果客户端尝试向一个不存在的主题发送消息,Broker 会自动创建这个主题
autoCreateTopicEnable=true
5.开放端口10911
systemctl start firewalld && firewall-cmd --permanent --add-port=10911/tcp && firewall-cmd --reload && firewall-cmd --query-port=10911/tcp

CleanShot 2024-07-12 at 12.52.09@2x

6.重新启动
1.进入bin目录
cd /usr/local/soft/rocketmq-all-4.8.0-bin-release/bin
2.启动mqnamesrv和mqbroker
1.启动 NameServer 并将输出重定向到 mqnamesrv.log
nohup sh mqnamesrv > mqnamesrv.log 2>&1 &
2.启动 Broker 并将输出重定向到 mqbroker.log
nohup sh mqbroker -c ../conf/broker.conf > mqbroker.log 2>&1 &
3.实时监控 NameServer 的日志文件
tail -f mqnamesrv.log &

CleanShot 2024-07-12 at 12.40.03@2x

4.实时监控 Broker 的日志文件
tail -f mqbroker.log &
5.查看进程
ps -ef | grep NamesrvStartup && ps -ef | grep BrokerStartup

CleanShot 2024-07-12 at 12.57.04@2x

2.项目集成MQ

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

CleanShot 2024-07-12 at 13.05.02@2x

2.sun-club-application-mq 引入domain依赖,用于消费mq
        <!-- 引入domain层 -->
        <dependency>
            <groupId>com.sun.club</groupId>
            <artifactId>sun-club-domain</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

CleanShot 2024-07-12 at 13.07.58@2x

3.sun-club-starter 引入mq层
        <!-- 引入mq层 -->
        <dependency>
            <groupId>com.sun.club</groupId>
            <artifactId>sun-club-application-mq</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

CleanShot 2024-07-12 at 13.11.35@2x

4.application.yml 配置mq
# mq配置
rocketmq:
  name-server:  # 作用是服务注册和发现,会自动发现broker
  producer:
    group: test-group

CleanShot 2024-07-12 at 13.16.40@2x

5.SubjectController.java
1.依赖注入 RocketMQTemplate
    @Resource
    private RocketMQTemplate rocketMQTemplate;
2.编写controller,作为消息生产者
    /**
     * 测试mq发送
     * @return
     */
    @GetMapping("/pushMessage")
    public Result<Boolean> pushMessage(@Param("id") int id) {
        rocketMQTemplate.convertAndSend("first-topic", "hello " + id);
        return Result.ok();
    }

CleanShot 2024-07-12 at 13.34.21@2x

6.TestConsumer.java 测试消费
package com.sunxiansheng.subject.application.mq;

import com.sun.media.jfxmedia.logging.Logger;
import groovy.util.logging.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

/**
 * Description:
 * @Author sun
 * @Create 2024/7/12 13:24
 * @Version 1.0
 */
@Component
// topic:主题,就是生产者那里指定的主题
// consumerGroup:消费组,在application.yml文件中配置的
// RocketMQListener<String>:这里的泛型就是消息的类型
@RocketMQMessageListener(topic = "first-topic", consumerGroup = "test-group")
@Slf4j
public class TestConsumer implements RocketMQListener<String> {

    private static final org.slf4j.Logger log = LoggerFactory.getLogger(TestConsumer.class);

    /**
     * 对消息进行消费
     * @param s
     */
    @Override
    public void onMessage(String s) {
        log.info("接受到消息了:{}", s);
    }

}

CleanShot 2024-07-12 at 13.34.57@2x

5.测试

CleanShot 2024-07-12 at 13.35.13@2x

CleanShot 2024-07-12 at 13.35.21@2x

3.点赞业务优化为MQ处理

1.SubjectLikedMessage.java 点赞消息实体
package com.sunxiansheng.subject.domain.entity;

import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 题目点赞消息
 */
@Data
@Accessors(chain = true) // 支持链式调用
public class SubjectLikedMessage implements Serializable {

    /**
     * 题目id
     */
    private Long subjectId;

    /**
     * 点赞人id
     */
    private String likeUserId;

    /**
     * 点赞状态 1点赞 0不点赞
     */
    private Integer status;

}
2.sun-club-domain 同步点赞数据
1.SubjectLikedDomainService.java
    /**
     * MQ同步点赞数据
     * @param subjectLikedBO
     */
    void syncLikedByMsg(SubjectLikedBO subjectLikedBO);
2.SubjectLikedDomainServiceImpl.java
    @Override
    public void syncLikedByMsg(SubjectLikedBO subjectLikedBO) {
        SubjectLiked subjectLiked = new SubjectLiked();
        subjectLiked.setSubjectId(subjectLikedBO.getSubjectId());
        subjectLiked.setLikeUserId(subjectLikedBO.getLikeUserId());
        subjectLiked.setStatus(subjectLikedBO.getStatus());
        subjectLiked.setIsDeleted(IsDeleteFlagEnum.UN_DELETED.getCode());
        subjectLikedService.insert(subjectLiked);
    }
3.add方法逻辑修改

CleanShot 2024-07-12 at 14.33.20@2x

4.测试

CleanShot 2024-07-12 at 14.37.16@2x

CleanShot 2024-07-12 at 14.37.25@2x

要在Spring Boot项目集成RocketMQ,你可以按照以下步骤进行操作: 1. 确保你的项目中已经添加了RocketMQ的依赖项。可以在项目的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` 2. 创建一个用于启动应用的类,命名为RocketmqApplication(根据你的项目命名规范可以自行修改)。在这个类上添加@SpringBootApplication注解,并且使用@ComponentScan注解将RocketMQ相关的包的路径添加进去。如下所示: ```java package com.springboot.rocketmq; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan(basePackages = {"com.springboot.rocketmq"}) public class RocketmqApplication { public static void main(String[] args) { SpringApplication.run(RocketmqApplication.class, args); } } ``` 3. 在应用程序中创建一个用于发送和接收消息的RocketMQ的生产者和消费者类。你可以根据自己的需求编写这些类,并将其放在`com.springboot.rocketmq`包下。 4. 在配置文件(application.properties或application.yml)中配置RocketMQ的相关属性,包括RocketMQ的服务器地址,生产者和消费者的组名等。例如: ```yaml #RocketMQ rocketmq.name-server=127.0.0.1:9876 rocketmq.producer.group=myProducerGroup rocketmq.consumer.group=myConsumerGroup ``` 5. 编写生产者和消费者的逻辑代码。例如,你可以使用RocketMQ的Template来发送消息,使用@RocketMQMessageListener注解来监听消息。具体的代码实现可以根据你的实际需求进行编写。 以上就是在Spring Boot项目集成RocketMQ的基本步骤。通过添加RocketMQ的依赖项,配置相关属性,以及编写生产者和消费者的逻辑代码,你就可以在Spring Boot应用程序中集成RocketMQ,并实现消息的发送和接收。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Spring Boot整合Rocketmq](https://blog.csdn.net/qq_18603599/article/details/81172866)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [SpringBoot整合websocket实现数据实时推送](https://download.csdn.net/download/qq_60067835/88269775)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S-X-S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值