- 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
即可。
![](https://img.haomeiwen.com/i24476144/dc77f664a3ce2a0d.png)
学习文档:
https://docs.spring.io/spring-amqp/docs/current/reference/html/
网友评论