Spring Cloud使用RocketMQ简单使用版
前言
未安装的可以看我前一篇博客
1.添加依赖
<!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-client -->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.9.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.rocketmq/rocketmq-spring-boot-starter -->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
Provider中和Consumer中都要添加依赖
2.配置文件properties
rocketmq.name-server=127.0.0.1:9876 rocketmq.producer.group=provider
消息发送者配置两条,消息消费者只配置第一条即可。
3.消息消费者
@Slf4j
@Service
@RocketMQMessageListener(consumerGroup = "provider", topic = "order")
//@RocketMQMessageListener(consumerGroup = "provider", topic = "order",nameServer = "127.0.0.1:9876")
public class MessageReceiveService implements RocketMQListener<Object> {
@Override
public void onMessage(Object o) {
log.info("收到订单信息,内容如下:{}, ", o);
}
}
在@RocketMQMessageListener中配置nameServer 后可以不用在properties或yml配置。
4.消息发送者
@RestController
@Slf4j
public class MessageSendController {
@Autowired
private RocketMQTemplate rocketMQTemplate;
private static Integer count =5 ;
/**
* http://localhost:8761/order/prod/1
*
* @param id
* @return
*/
@RequestMapping("/order/prod/{pid}")
public Order order(@PathVariable("pid") Integer id) {
log.info("收到下单请求,准备查询商品信息。id={}", id);
if (id < 0) {
log.info("不存在该商品");
return null;
} else {
Product product = new Product();
product.setName("电视");
product.setCount(count);
product.setMoney(1500);
log.info("商品信息查询成功。内容为:{}", JSON.toJSONString(product));
// 进行容错判断
if (count <= 0) {
log.info("商品库存不足下单失败");
return null;
}
log.info("库存数量。count={}",count);
count--;
product.setCount(count);
// 生成商品信息保存
Order order = new Order();
order.setOid(UUID.randomUUID().toString());
order.setPid(1);
order.setPname("电视");
log.info("订单信息保存成功。内容为:{}", JSON.toJSONString(order));
rocketMQTemplate.convertAndSend("order", order);
return order;
}
}
}
