- Maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
- YML配置
spring:
rabbitmq:
host: 192.168.11.138
username: anyone
password: 123456
- 代码
实现用get方法接受msg参数并发送和接收消息
@RestController
@RequestMapping(value = ["/v1/test"])
class Test(
private val rabbitTemplate: RabbitTemplate
) {
@GetMapping("/{msg}")
fun test(@PathVariable msg: String) {
rabbitTemplate.convertAndSend("test", msg)
}
@RabbitListener(queues = ["test"])
fun listen(msg: String) {
println(msg)
}
}
问题记录:
- 以为端口和管理界面的端口是同一个,于是在步骤2配置里加入了port:
15672,出现以下错误。实际上默认端口是5672。
image.png
解决:删除port: 15672或修改端口号 - 若在代码
@RabbitListener(queues = ["test3"])中的queues不存在,则会出现以下错误。
image.png
解决:
a. 在管理界面手动添加queue
image.png
b. 代码实现
@Configuration
class RabbitConfiguration {
@Bean
fun myQueue(): Queue {
return Queue("test3");
}
}
- 想实现发送整个对象,代码如下
image.png
发送消息会报以下错误,是因为Tar这个类没有实现Serializable接口。
image.png
解决:
实现Serializable即可。
image.png
学习文档:
https://docs.spring.io/spring-amqp/docs/current/reference/html/











网友评论