38.springboot使用rabbitmq

pom依赖

java 复制代码
<!--amqp依赖,包含RabbitMQ-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>

配置文件添加

java 复制代码
spring:
  application:
    name: message-service
  rabbitmq:
    host: localhost
    port: 5672
    virtual-host: / # 虚拟主机,对每个用户进行隔离
    username: guest
    password: guest

# 日志配置
logging:
  pattern:
    dateformat: yyyy-MM-dd HH:mm:ss:SSS
  level:
    com.xkj.org: info
    # rabbitmq消息日志
    org.springframework.amqp: DEBUG

配置队列对象

java 复制代码
package com.xkj.org.config;

import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 通过配置类声明队列
 */
@Configuration
public class RabbitMQConfig {

    final static String QUEUE_NAME = "user.queue";

    @Bean
    public Queue userQueue() {
        return new Queue(QUEUE_NAME, true);
    }
}

发送消息

java 复制代码
package com.xkj.org.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xkj.org.entity.User;
import com.xkj.org.mapper.UserMapper;
import com.xkj.org.service.IUserService;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {

    final static String QUEUE_NAME = "user.queue";

    @Autowired
    private RabbitTemplate rabbitTemplate;


    @Override
    public User getById(Integer userId) {
        return baseMapper.selectById(userId);
    }

    @Override
    public void register(User user) {
        baseMapper.insert(user);
        //发生消息到rabbitmq,异步操作
        String message = String.format("你好%s,恭喜你注册成功", user.getUsername());
        rabbitTemplate.convertAndSend(QUEUE_NAME, message);
    }


}

消费者

java 复制代码
package com.xkj.org.listener;

import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class UserMsgListener {

    final static String QUEUE_NAME = "user.queue";

    @RabbitListener(queues = QUEUE_NAME)
    public void listenSimpleQueueMessage(String msg) {
        log.info("接收到消息为:【{}】", msg);
    }
}
相关推荐
雾林小妖2 小时前
springboot集成deepseek
java·spring boot·后端
苦学编程的谢5 小时前
Mybatis_4
java·spring boot·tomcat·mybatis·mybatis_plus
Reggie_L5 小时前
RabbitMQ快速入门
rabbitmq
她说..5 小时前
MybatisPlus-快速入门
java·spring boot·spring cloud·微服务·mybatis·mybatisplus
tuokuac6 小时前
创建的springboot工程java文件夹下还是文件夹而不是包
java·spring boot·后端
Hejjon7 小时前
携带参数的表单文件上传 axios, SpringBoot
java·spring boot·后端
荔枝爱编程8 小时前
高性能企业级消息中心架构实现与分享(三):数据存储设计与高可用保障
spring boot·后端·消息队列
武昌库里写JAVA8 小时前
【MySQL】MySQL数据库如何改名
java·vue.js·spring boot·sql·学习
neoooo11 小时前
《锁得住,才能活得久》——一篇讲透 Redisson 分布式锁的技术实录
java·spring boot·redis
用户60830892904713 小时前
Spring Boot自定义注解
spring boot