美文网首页
Springboot集成RabbitMQ

Springboot集成RabbitMQ

作者: Anson_1f2a | 来源:发表于2021-03-11 20:22 被阅读0次
  1. Maven依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
  1. YML配置
spring:
  rabbitmq:
    host: 192.168.11.138
    username: anyone
    password: 123456
  1. 代码
    实现用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)
    }
}

问题记录:

  1. 以为端口和管理界面的端口是同一个,于是在步骤2配置里加入了port:15672,出现以下错误。实际上默认端口是5672
    image.png
    解决:删除port: 15672或修改端口号
  2. 若在代码@RabbitListener(queues = ["test3"])中的queues不存在,则会出现以下错误。
    image.png
    解决:
    a. 在管理界面手动添加queue
    image.png
    b. 代码实现
@Configuration
class RabbitConfiguration {
    @Bean
    fun myQueue(): Queue  {
       return Queue("test3");
    }
}
  1. 想实现发送整个对象,代码如下
    image.png
    发送消息会报以下错误,是因为 Tar这个类没有实现Serializable 接口。
    image.png

解决:
实现Serializable即可。

image.png

学习文档:
https://docs.spring.io/spring-amqp/docs/current/reference/html/

相关文章

网友评论

      本文标题:Springboot集成RabbitMQ

      本文链接:https://www.haomeiwen.com/subject/ifznqltx.html