RabbitMQ之基本使用

本文详细解读了Java面试中可能出现的题目,涉及POM文件配置、SpringBoot与rabbitMQ的集成,以及实战项目的源码分析。还包括面试技巧分享和真题解析,帮助读者提升技术面试准备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

pom文件:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns=“http://maven.apache.org/POM/4.0.0”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

org.example

rabbitMQ

1.0-SNAPSHOT

pom

provider

consumer

<java.version>1.8</java.version>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<spring-boot.version>2.4.1</spring-boot.version>

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-amqp

org.springframework.boot

spring-boot-dependencies

${spring-boot.version}

pom

import

2、子项目:新建发布者,生产者

pom文件:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

com.lv

code

0.0.1-SNAPSHOT

provider

Demo project for Spring Boot

rabbitMQ

org.example

1.0-SNAPSHOT

org.apache.maven.plugins

maven-compiler-plugin

3.8.1

1.8

1.8

UTF-8

org.springframework.boot

spring-boot-maven-plugin

2.4.1

com.lv.code.ProviderApplication

repackage

repackage

3、子项目:新建发布者,消费者

pom文件:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns=“http://maven.apache.org/POM/4.0.0” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

com.lv

code

0.0.1-SNAPSHOT

consumer

Demo project for Spring Boot

rabbitMQ

org.example

1.0-SNAPSHOT

org.springframework.boot

spring-boot-starter-web

org.apache.maven.plugins

maven-compiler-plugin

3.8.1

1.8

1.8

UTF-8

org.springframework.boot

spring-boot-maven-plugin

2.4.1

com.lv.code.ConsumerApplication

repackage

repackage

4、连接消息队列

在生产者中导入yml文件:

server:

port: 8080

spring:

application:

name: xx

rabbitmq:

host: 192.168.218.130

password: 123456

port: 5672

username: springboot

virtual-host: my_vhost

生产者中新建文件RabbitConfig:此类与容器一起启动的时候,会产生firstQueue队列

package com.lv.code;

import org.springframework.amqp.core.Queue;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

@SuppressWarnings(“all”)

public class RabbitConfig {

@Bean

public Queue firstQueue() {

return new Queue(“firstQueue”);

}

}

生产者中新建发送类:sender

package com.lv.code;

import org.springframework.amqp.core.AmqpTemplate;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Component;

@Component

@SuppressWarnings(“all”)

public class Sender {

@Autowired

private AmqpTemplate rabbitTemplate;

public void sendFirst() {

rabbitTemplate.convertAndSend(“firstQueue”, “Hello World”);

}

}

生产者测试类运行:

package com.lv.code;

import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest

class ProviderApplicationTests {

@Autowired

private Sender sender;

@Test

void contextLoads() {

sender.sendFirst();

}

}

出现一个队列:ready那显示1,表示具有一条信息没有被接收

5、消费者接收信息

消费者内导入yml文件:

server:

port: 8081

spring:

application:

name: consumer

rabbitmq:

host: 192.168.218.130

password: 123456

port: 5672

username: springboot

virtual-host: my_vhost

写一个接收者:Receiver

package com.lv.code;

import lombok.extern.slf4j.Slf4j;

import org.springframework.amqp.rabbit.annotation.RabbitHandler;

import org.springframework.amqp.rabbit.annotation.RabbitListener;

import org.springframework.stereotype.Component;

@Component

@SuppressWarnings(“all”)

@Slf4j

//类监听

@RabbitListener(queues = “firstQueue”)

public class Receiver {

@RabbitHandler

public void process(String msg) {

log.warn(“接收到:” + msg);

}

}

运行启动类,接收到信息:

6、完成自定义数据发送

创建一个实体类:

package com.lv.code;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

@SuppressWarnings(“all”)

@Data

@AllArgsConstructor

@NoArgsConstructor

public class User{

private String username;

private String userpwd;

}

在发送类新增个方法:Sender

public void sendFirst(User user) {

rabbitTemplate.convertAndSend(“firstQueue”, user);

}

测试类中的方法:

@Test

void contextLoads() {

sender.sendFirst(new User(“aa”,“bb”));

}

生产者发送不了:简单的消息转换器只支持string类型,byte数组类型以及序列化的数据,但是user类不是序列化的。

所以给user实现接口,使它序列化:

消费者接受不了:由于消费者接收的是string类

将user实体类导入到消费者内,并修改接收类的方法,接收对象:

在此处发送的东西不仅字段要相同,包名也要相同,

**解决方案:①、**可以使用DTO来发送;

、或者可以将对象先转换为json数据,发到消费者后再转换为对象

我们使用第二种方案:

发送类新增方法:

public void sendFirst(String json) {

rabbitTemplate.convertAndSend(“firstQueue”, json);

}

生产者测试类:

package com.lv.code;

import com.fasterxml.jackson.databind.ObjectMapper;

import lombok.SneakyThrows;

import org.junit.jupiter.api.Test;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

最后

分享一套我整理的面试干货,这份文档结合了我多年的面试官经验,站在面试官的角度来告诉你,面试官提的那些问题他最想听到你给他的回答是什么,分享出来帮助那些对前途感到迷茫的朋友。

面试经验技巧篇
  • 经验技巧1 如何巧妙地回答面试官的问题
  • 经验技巧2 如何回答技术性的问题
  • 经验技巧3 如何回答非技术性问题
  • 经验技巧4 如何回答快速估算类问题
  • 经验技巧5 如何回答算法设计问题
  • 经验技巧6 如何回答系统设计题
  • 经验技巧7 如何解决求职中的时间冲突问题
  • 经验技巧8 如果面试问题曾经遇见过,是否要告知面试官
  • 经验技巧9 在被企业拒绝后是否可以再申请
  • 经验技巧10 如何应对自己不会回答的问题
  • 经验技巧11 如何应对面试官的“激将法”语言
  • 经验技巧12 如何处理与面试官持不同观点这个问题
  • 经验技巧13 什么是职场暗语

面试真题篇
  • 真题详解1 某知名互联网下载服务提供商软件工程师笔试题
  • 真题详解2 某知名社交平台软件工程师笔试题
  • 真题详解3 某知名安全软件服务提供商软件工程师笔试题
  • 真题详解4 某知名互联网金融企业软件工程师笔试题
  • 真题详解5 某知名搜索引擎提供商软件工程师笔试题
  • 真题详解6 某初创公司软件工程师笔试题
  • 真题详解7 某知名游戏软件开发公司软件工程师笔试题
  • 真题详解8 某知名电子商务公司软件工程师笔试题
  • 真题详解9 某顶级生活消费类网站软件工程师笔试题
  • 真题详解10 某知名门户网站软件工程师笔试题
  • 真题详解11 某知名互联网金融企业软件工程师笔试题
  • 真题详解12 国内某知名网络设备提供商软件工程师笔试题
  • 真题详解13 国内某顶级手机制造商软件工程师笔试题
  • 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
  • 真题详解15 某著名社交类上市公司软件工程师笔试题
  • 真题详解16 某知名互联网公司软件工程师笔试题
  • 真题详解17 某知名网络安全公司校园招聘技术类笔试题
  • 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题

资料整理不易,点个关注再走吧
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
业拒绝后是否可以再申请

  • 经验技巧10 如何应对自己不会回答的问题
  • 经验技巧11 如何应对面试官的“激将法”语言
  • 经验技巧12 如何处理与面试官持不同观点这个问题
  • 经验技巧13 什么是职场暗语

[外链图片转存中…(img-QMDdjfMc-1714739909524)]

面试真题篇
  • 真题详解1 某知名互联网下载服务提供商软件工程师笔试题
  • 真题详解2 某知名社交平台软件工程师笔试题
  • 真题详解3 某知名安全软件服务提供商软件工程师笔试题
  • 真题详解4 某知名互联网金融企业软件工程师笔试题
  • 真题详解5 某知名搜索引擎提供商软件工程师笔试题
  • 真题详解6 某初创公司软件工程师笔试题
  • 真题详解7 某知名游戏软件开发公司软件工程师笔试题
  • 真题详解8 某知名电子商务公司软件工程师笔试题
  • 真题详解9 某顶级生活消费类网站软件工程师笔试题
  • 真题详解10 某知名门户网站软件工程师笔试题
  • 真题详解11 某知名互联网金融企业软件工程师笔试题
  • 真题详解12 国内某知名网络设备提供商软件工程师笔试题
  • 真题详解13 国内某顶级手机制造商软件工程师笔试题
  • 真题详解14 某顶级大数据综合服务提供商软件工程师笔试题
  • 真题详解15 某著名社交类上市公司软件工程师笔试题
  • 真题详解16 某知名互联网公司软件工程师笔试题
  • 真题详解17 某知名网络安全公司校园招聘技术类笔试题
  • 真题详解18 某知名互联网游戏公司校园招聘运维开发岗笔试题

[外链图片转存中…(img-ZKv7nEvh-1714739909524)]

资料整理不易,点个关注再走吧
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值