RocketMq入门案例

修改社交会员

 

//封装发送入参:

 SocialMember socialMember = new SocialMember();

 socialMember.setLastUpd(new Date()); //大数据要求设置修改时间

String getmId = socialMember.setmId(request.getData().getmId();));

        }

 

sendRocketMqForUpdateMember(socialMember);

rocketMq 发送消息

 public void sendRocketMqForUpdateMember(SocialMember socialMember) {

        try {

            BlockChainMemberUpdateItem item = new BlockChainMemberUpdateItem();

            item.setFlMemberId(String.valueOf(socialMember.getmId()));// 会员id

            item.setFlToken(null); // token

            item.setFlRole(null); // 会员角色

            item.setFlCategory("2");// 会员类别

            item.setFlStatus("0"); // 会员状态

            item.setFlOper("update"); // 对数据进行的操作(新增还是更新 insert或者update)

            item.setFlUpdated(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));// 会员的更新时间

            // 由会员信息组成的一个json字符串

            item.setFlData(socialMember);

            // 数据签名

            String plainTextData = GsonUtil.toJson(item, BlockChainMemberUpdateItem.class);

            String encryptData = EccService.sign(plainTextData,BlockChainAdapter.SOCIAL_TYPE);

            LogMgr.sysInfo("获取的签名数据:{}", encryptData);

            BlockChainMemberRequest<BlockChainMemberUpdateItem> request = new BlockChainMemberRequest<BlockChainMemberUpdateItem>();

            request.setData(item);

            request.setFlDataSignature(encryptData);

            String jsonData = GsonUtil.toJson(request, BlockChainMemberRequest.class);

            rocketMqProductor.sendMsg(null, BLOCK_CHAIN_TOPIC, BLOCK_CHAIN_UPDATE_TAG, null, jsonData);

            //========================标签发送数据=======================

            LabelMemberItem labelMemberItem = new LabelMemberItem();

            labelMemberItem.setFlMemberId(String.valueOf(String.valueOf(socialMember.getmId()))); // 会员id

            labelMemberItem.setFlCategory("1");// 会员类别

            labelMemberItem.setFlStatus("0"); // 会员状态

            labelMemberItem.setFlOper("update"); // 对数据进行的操作(新增还是更新 insert或者update)

            labelMemberItem.setFlCreated(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));// 会员的更新时间

            labelMemberItem.setFlData(socialMember);

            String labelJsonData = FastJsonUtil.parseToJSON(labelMemberItem);

            rocketMqProductor.sendMsg(null, LABEL_TOPIC, LABEL_UPDATE_TAG, null, labelJsonData);

        } catch (Exception e) {

            LogMgr.sysInfo("rocketMq send message fail");

        }

    }

自己封装方法

package com.foriseland.fas.member.mq;

import com.foriseland.fjf.mq.broadcasting.BroadcastProducer;

import org.apache.rocketmq.client.producer.SendResult;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Component;

/**

 * @author zhangchenglin

 * @describe

 * @createTime 2018/3/28

 */

@Component

public class RocketMqProductor {

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

    @Autowired

    private BroadcastProducer producer;

    static int startOnly = 0;

    public SendResult sendMsg(String producerGroup, String topic, String tags, String keys, String msg) {

        if (producerGroup == null) {

            producerGroup = "-";

        }

        if (startOnly == 0) {

            try {

                producer.setProducerGroup("-", producerGroup);

                producer.getRocketProducer().setRetryTimesWhenSendFailed(5);

                producer.start();

                startOnly++;

            } catch (Exception e) {

                logger.error("start rocketMq exception:{}", e);

                return null;

            }

        }

        SendResult sendResult = null;

        try {

            sendResult = producer.send(producerGroup, topic, tags, keys, msg);

            logger.info("rocketMq发送结果:{}", sendResult);

        } catch (Exception e) {

            logger.error("rocketMq send message exception:{}", e);

        } finally {

            shutDown();

        }

        return sendResult;

    }

    public void shutDown() {

//        startOnly = 0;

//        producer.shutdown();

    }

}

底层实现---直接调用

@SuppressWarnings("static-access")

public SendResult send(String producerGroup, String topic, String tags, String keys, String body) throws UnsupportedEncodingException,MQClientException, RemotingException, MQBrokerException, InterruptedException {

rocketProducer.newInstance().setProducerGroup(producerGroup );

//producer.start();

long startTime = System.currentTimeMillis();

Message message = new Message(topic, tags, keys, body.getBytes(RemotingHelper.DEFAULT_CHARSET));

int messageDelayTimeLevel = rocketProducer.getRocketMqClientConfig().getRocketConfig().getMessageDelayTimeLevel();

message.setDelayTimeLevel(messageDelayTimeLevel);

SendResult sendResult = rocketProducer.newInstance().send(message);

long endTime = System.currentTimeMillis();

logger.info("send cost:" + (endTime - startTime) + "ms");

logger.info(sendResult);

return sendResult;

}

猜你喜欢

转载自blog.csdn.net/chai1230/article/details/80341816