package com.rocketmq.controller.produce;

import com.rocketmq.util.RocketmqSampleUtils;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.common.message.Message;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.nio.charset.StandardCharsets;

import org.slf4j.Logger;

/**
 * 支付系统生产者
 */
@Controller
@RequestMapping("/pay")
public class PaySystemProducer {

    private static final Logger logger = LoggerFactory.getLogger(PaySystemProducer.class);

    @RequestMapping("/produce")
    @ResponseBody
    public void producePay() {
        DefaultMQProducer producer = new DefaultMQProducer("PaySystemProducer");
        // 填入元数据连接地址
        producer.setNamesrvAddr("100.85.217.111:8200;100.93.3.194:8200");
        try {
            producer.start();
            String[] tags = new String[]{"TagA", "TagB", "TagC", "TagD", "TagE"};
            for (int i = 0; i < 10; i++) {
                String orderId = "order" + (i % 10);
                Message msg = new Message("PayTopic", tags[i % tags.length], "KEY" + i,
                        ("This is pay " + i).getBytes(StandardCharsets.UTF_8));
                SendResult sendResult = RocketmqSampleUtils.sendMessage(producer, msg, orderId);
                logger.info(sendResult.toString());
            }
        } catch (Exception e) {
            logger.info(e.getMessage());
        }
        producer.shutdown();
    }
}