springboot整合rabbitmq
eg. order-server作为消息生产者将Order对象推送到rabbitmq上,msg-server监听rabbitmq的order队列,向用户推送订单信息。
控制台
添加一个新的exchange
添加一个新的queue
将exchange、queue绑定,可以在exchange中绑定,也可以在queue中绑定,此处以exchange中绑定为例
routing key:
- 可以写具体的路由规则,eg. order.abcd
- 可以用通配符*,eg. order.* ,*中不能含有.,可以是order.xxx
- 可以使用多级通配符#,eg. order.#,#中可以含有. 可以是order.xxx.xxx.xxx
依赖
创建消息生产者、消息消费者时都要勾选 Messaging -> Spring for RabbitMQ,也可以手动添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<!-- 非必需 -->
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit-test</artifactId>
<scope>test</scope>
</dependency>
生产者 order-server
yml
此处keyi使用默认的虚拟主机,也可以给订单模块新建虚拟主机/order
消费者
第一个是并发数(初始化数量),此消费者服务启动时rabbitmq server会创建5个channel来与此消费者通信。一个channel代表一个消费(者)。
第二个是最大并发数(channel最大数量)
第三个是签收(确认)模式,手动签收manual、自动签收auto,一般都是处理完消息手动签收。
第四个用于限流,每次只接收多少条消息,即x条x条地处理
rabitimq支持事务,但不建议使用事务,因为严重影响性能。
有些消息对即时性要求很高,过了一些时间,如果这条消息还积压在queue中,这条消息可能就没有使用价值了,没必要再投递,需要删除这条消息。可以设置消息的有效期,如果指定的时间内没有投递此消息,queue会自动删除此消息,不再投递。
实体类
与生产者保持一致