RocketMQ生产者进行订单回传 间隔一个小时回传一次

applicationContext.xml  配置项目启动时就同步RocketMQ

<!--RocketMQ生产者-->
<bean id="producer" class="com.tianchengsoft.rocketmq.Producer"
      init-method="init" scope="singleton">
    <property name="producerGroup" value="******"/>
    <property name="namesrvAddr" value="****"/>
</bean>

Producer.class  工具类

package com.tianchengsoft.rocketmq;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.tianchengsoft.service.OrderService;
import org.apache.log4j.Logger;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.client.producer.SendStatus;
import org.apache.rocketmq.common.message.Message;
import org.apache.rocketmq.remoting.common.RemotingHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

@Component
public class Producer {
    private static final Logger logger = Logger.getLogger(Producer.class);//记录日志
    private DefaultMQProducer defaultMQProducer;
    private String producerGroup;
    private String namesrvAddr;

    @Resource
    private OrderService orderService;
    private final Integer user_module = 505;

    /**
     * 初始化
     *
     * @throws MQClientException
     */
    public void init() {


        String msgContent = "";
        try {
            List<Map<String, Object>> orderReturnList = orderService.findOrderDetails();//得到要回传的订单数据  
            if (orderReturnList != null && orderReturnList.size() > 0) {
                defaultMQProducer = new DefaultMQProducer("****");//producerGroup 
                defaultMQProducer.setNamesrvAddr("***");//namesrvAddr
                defaultMQProducer.setInstanceName(String.valueOf(System
                        .currentTimeMillis()));
                defaultMQProducer.start();
                msgContent = JSON.toJSONString(orderReturnList);

                System.out.println("订单回传参数:" + msgContent);
                Message msg = new Message("****" /* 主题 */,
                        "***" /* 表名 */,
           "t_order_test"/* 内容 */,
                        (msgContent).getBytes(RemotingHelper.DEFAULT_CHARSET) /* Message body */);


                SendResult sendResult = defaultMQProducer.send(msg);
                System.out.printf("%s%n", sendResult);

                if (sendResult.getSendStatus() == SendStatus.SEND_OK) {
                    orderService.updateOrderReturnSuccess();
                }
            }
        } catch (Exception e) {
            System.out.println(e);
            logger.info("订单回传:" + msgContent);
        }
        System.out.println("DefaultMQProudcer start success!");
    }

    /**
     * 执行销毁
     */
    public void destroy() {
        defaultMQProducer.shutdown();
    }


    public DefaultMQProducer getDefaultMQProducer() {
        return defaultMQProducer;
    }

    public void setDefaultMQProducer(DefaultMQProducer defaultMQProducer) {
        this.defaultMQProducer = defaultMQProducer;
    }

    public String getProducerGroup() {
        return producerGroup;
    }

    public void setProducerGroup(String producerGroup) {
        this.producerGroup = producerGroup;
    }

    public String getNamesrvAddr() {
        return namesrvAddr;
    }

    public void setNamesrvAddr(String namesrvAddr) {
        this.namesrvAddr = namesrvAddr;
    }


}

定时器代码 OrderReturnTask

package com.tianchengsoft.utils.task;

import com.tianchengsoft.rocketmq.Producer;
import org.springframework.core.io.support.PropertiesLoaderUtils;
import org.springframework.stereotype.Component;

import org.springframework.scheduling.annotation.Scheduled;

import javax.annotation.Resource;
import java.io.IOException;
import java.util.Properties;

@Component
public class OrderReturnTask {
    @Resource
    private Producer producer;
//    @Scheduled(cron = "0/5  * * * * ?")

    /**
     * 每间隔1个小时执行一次
     */
    @Scheduled(cron = "0 0 * * * ?")
    public void orderReturnTask() {
        Properties properties = null;
        try {
            properties = PropertiesLoaderUtils.loadAllProperties("timedTask.properties");//获取配置文件 
            String timedTask = properties.getProperty("timedTask");
            //判断定时器是否开启
            if("true".equals(timedTask)){
                producer.init();
                producer.destroy();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

pom.xml代码

<!--RocketMQ-->
<dependency>
    <groupId>org.apache.rocketmq</groupId>
    <artifactId>rocketmq-client</artifactId>
    <version>${rocketmq-client.version}</version>
</dependency>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值