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);
    }
}
相关推荐
深漂的华哥8 小时前
Ruoyi-Plus前后端分离场景下,数据加密传输
java·spring boot·后端·开源·maven·ruoyi
剑胆琴心静水深流10 小时前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm
qq_1851986913 小时前
SpringBoot-五-AOT
java·spring boot·后端
卓怡学长14 小时前
w180springboot基于Java的悠扬乐器管理
java·spring boot·mysql·spring·maven·intellij-idea
choumou_M15 小时前
SpringBoot_5:商品秒杀场景的并发实践(初步)
java·spring boot·后端
攻城有术16 小时前
专项攻克-SpringBoot启动后 Bean的实例数量问题
java·spring boot·后端
程序员贺加贝17 小时前
别把 ThreadLocal 写进 Serializer:一次 SaaS 多租户 Jackson 上下文污染排查
java·spring boot
evans在进步17 小时前
Spring Boot 工程化核心详解:Parent、Starter、热部署、事务与多数据源
spring boot·后端·python
卓怡学长18 小时前
w181springboot机场乘客服务系统
java·数据库·spring boot·spring·intellij-idea
罗超驿19 小时前
SpringBoot 快速入门
java·spring boot·后端