淮南网站优化,网站降权 烦,wordpress文章归档,有没有专门建设网站的公司前言#xff1a;
经过上面俩章学习#xff0c;我们已经知道Rabbit的使用方式RabbitMQ 七种工作模式介绍_rabbitmq 工作模式-CSDN博客
RabbitMQ的工作队列在Spring Boot中实现#xff08;详解常⽤的⼯作模式#xff09;-CSDN博客作为⼀个消息队列,RabbitMQ也可以⽤作应⽤程…前言
经过上面俩章学习我们已经知道Rabbit的使用方式RabbitMQ 七种工作模式介绍_rabbitmq 工作模式-CSDN博客
RabbitMQ的工作队列在Spring Boot中实现详解常⽤的⼯作模式-CSDN博客作为⼀个消息队列,RabbitMQ也可以⽤作应⽤程序之间的通信.上述代码⽣产者和消费者代码放在不同的应⽤中即可完成不同应⽤程序的通信.
目录
前言
一.创建项目
二.订单系统(⽣产者)
三.物流系统(消费者)
四.发送消息格式为对象 接下来我们来看,基于SpringBootRabbitMQ完成应⽤间的通信.需求描述: ⽤⼾下单成功之后,通知物流系统,进⾏发货.(只讲应⽤通信,不做具体功能实现) 一.创建项目
为⽅便演示,把两个项⽬放在⼀个项⽬中
11. 创建⼀个空的项⽬rabbitmq-communication(其实就是⼀个空的⽂件夹)
2 在这个项⽬⾥,创建Module 3后续流程和创建SpringBoot项⽬⼀样 4若发现识别不到java类文件 只需右击改项目文件点进对应选项修改成Maven即可 二.订单系统(⽣产者)
1配置相应文件 2) 声明队列
package com.bite.order.config;import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.QueueBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class RabbitmqConfig {Bean(orderQueue)public Queue orderQueue() {return QueueBuilder.durable(order.create).build();}
}3) 编写下单接⼝,下单成功之后,发送订单消息
package com.bite.order.controller;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.UUID;RequestMapping(/order)
RestController
public class OrderController {Autowiredprivate RabbitTemplate rabbitTemplate;RequestMapping(/create)public String create() {//省略相关操作 例如校验参数 相关数据库操作 //主要测试代码是否最后成功发送即可String orderId UUID.randomUUID().toString();rabbitTemplate.convertAndSend(,order.create,下单成功, 订单 ID:orderId);return 下单成功;}
}4) 启动订单系统生产者观察结果 三.物流系统(消费者) 1配置相应文件 8080端⼝已经被订单系统占⽤了,修改物流系统的端⼝号为9090 2监听队列
package com.bite.logistics.listener;import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;Component
public class OrderListener {RabbitListener(queues order.create)public void handleMessage(String message) {System.out.println(接收订单信息message);}
}结果
接收到消息:下单成功, 订单ID:a4c1dbdc-688d-430a-ac16-bca713f85940
接收到消息:下单成功, 订单ID:5d190f19-7a8c-4866-b6e7-2b2bbe79412d四.发送消息格式为对象
定义一个对象
import lombok.Data;
Data
public class OrderInfo {private String orderId;private String name;
}生产者 RequestMapping(/create2)public String create2() {//省略相关操作 例如校验参数 相关数据库操作//主要测试代码是否最后成功发送即可OrderInfo orderInfo new OrderInfo();orderInfo.setOrderId(UUID.randomUUID().toString());orderInfo.setName(商品new Random().nextInt(100));rabbitTemplate.convertAndSend(,order.create,orderInfo);return 下单成功;} 此时为乱码因此需要序列化 SpringAMQP提供了 Jackson2JsonMessageConverter 和 MappingJackson2MessageConverter 等转换器,我们需要把⼀个 MessageConverter 设置到 RabbitTemplate 中. 在config包里面添加 Beanpublic RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {RabbitTemplate template new RabbitTemplate(connectionFactory);template.setMessageConverter(jackson2JsonMessageConverter()); // 设置消息转换器return template;}private Jackson2JsonMessageConverter jackson2JsonMessageConverter() {return new Jackson2JsonMessageConverter();}
消费者 RabbitListener(queues order.create)public void handleMessage2(OrderInfo orderInfo) {System.out.println(接收订单信息OrderInfo orderInfo);} 结语 写博客不仅仅是为了分享学习经历同时这也有利于我巩固知识点总结该知识点由于作者水平有限对文章有任何问题的还请指出接受大家的批评让我改进。同时也希望读者们不吝啬你们的点赞收藏关注你们的鼓励是我创作的最大动力