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);
    }
}
相关推荐
小七mod2 小时前
【MyBatis】MyBatis与Spring和Spring Boot整合原理
spring boot·spring·mybatis
猴哥源码2 小时前
基于Java+SpringBoot的动物领养平台
java·spring boot
华子w9089258592 小时前
基于 SpringBoot+VueJS 的农产品研究报告管理系统设计与实现
vue.js·spring boot·后端
猴哥源码3 小时前
基于Java+SpringBoot的在线小说阅读平台
java·spring boot
上上迁6 小时前
分布式生成 ID 策略的演进和最佳实践,含springBoot 实现(Java版本)
java·spring boot·分布式
秋千码途6 小时前
小架构step系列07:查找日志配置文件
spring boot·后端·架构
seventeennnnn8 小时前
谢飞机的Java高级开发面试:从Spring Boot到分布式架构的蜕变之旅
spring boot·微服务架构·java面试·分布式系统·电商支付
超级小忍10 小时前
服务端向客户端主动推送数据的几种方法(Spring Boot 环境)
java·spring boot·后端
时间会给答案scidag10 小时前
报错 400 和405解决方案
vue.js·spring boot
Wyc7240911 小时前
SpringBoot
java·spring boot·spring