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);
    }
}
相关推荐
派大鑫wink2 小时前
【JAVA学习日志】SpringBoot 参数配置:从基础到实战,解锁灵活配置新姿势
java·spring boot·后端
xUxIAOrUIII2 小时前
【Spring Boot】控制器Controller方法
java·spring boot·后端
Dolphin_Home2 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
JIngJaneIL3 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
全靠bug跑4 小时前
Spring Cloud OpenFeign 实战三部曲:快速集成 · 连接池优化 · 客户端抽取
java·spring boot·openfeign
北城以北88885 小时前
Spring定时任务与Spring MVC拦截器
spring boot·spring·mvc
缘不易5 小时前
Springboot 整合JustAuth实现gitee授权登录
spring boot·后端·gitee
Mr.朱鹏5 小时前
SQL深度分页问题案例实战
java·数据库·spring boot·sql·spring·spring cloud·kafka
白宇横流学长6 小时前
基于SpringBoot实现的冬奥会科普平台设计与实现【源码+文档】
java·spring boot·后端
Rover.x8 小时前
Netty基于SpringBoot实现WebSocket
spring boot·后端·websocket