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;
        }

    }


}
经验分享 程序员 微信小程序 职场和发展