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);
    }
}
相关推荐
Yvonne97818 分钟前
定时任务:springboot集成xxl-job-core(一)
java·spring boot·xxl-job
crud26 分钟前
Spring Boot 拦截器实战:登录验证、日志记录、权限控制一网打尽!
spring boot
yuren_xia1 小时前
Spring Boot 自动参数校验
java·spring boot·后端
crud1 小时前
Spring Boot 全局异常处理:统一返回格式,提升接口健壮性!
spring boot
众纳1 小时前
Spring Boot 3.X 下Redis缓存的尝试(二):自动注解实现自动化缓存操作
spring boot·redis·redis 缓存·spring boot 缓存·注释缓存·注释 redis·redis 注释
Rocky4012 小时前
SpringMVC的注解
spring boot·后端·mvc
风象南3 小时前
SpringBoot慢查询的6种监控方案
java·spring boot·后端
翻滚吧键盘5 小时前
Spring Boot,两种配置文件
java·spring boot·后端
一步一念11 小时前
Langchaine4j 流式输出 (6)
spring boot·ai·langchain4j
MyikJ13 小时前
Java求职面试:从Spring到微服务的技术挑战
java·数据库·spring boot·spring cloud·微服务·orm·面试技巧