软件编程
位置:首页>> 软件编程>> java编程>> RocketMQ实现随缘分BUG小功能示例详解

RocketMQ实现随缘分BUG小功能示例详解

作者:奔跑的毛球  发布时间:2023-01-20 04:21:05 

标签:RocketMQ,随缘,BUG

以前公司的产品已经上线20多年了,主要是维护,也就是改bug。每周我们Team会从Jira上拿我们可以改的bug,因为每个团队负责的业务范围不一样,我们团队只能改我们自己业务范围的。这样每周大概有20个左右的新bug,假如团队一共10个人,那么均分就是每人两个,改完下班。

但是这BUG肯定有难有简单,大家肯定都愿意改简单的,在家办公,任务量完了不就等于放假么。开始是自己给自己抢,就忒卷,是欧美项目,所以客服晚上报出来的bug多。有的哥们早上5点起来看有没有新的简单的。

这对那些反应慢的兄弟不公平。领导分的话,就是能者多劳了,累的累死,闲的闲死。所以我们就需要一个随机的分bug小工具,正所谓听天由命,富贵在天。

实现过程

首先来n个消费者,n就是需要分的人数。

这里需要将这些消费者全部放入同一个group,这样这些bug会均分给这些消费者,而且当某个同事请假没有来的时候,那么就不启动自己的消费者,这样就是其他小伙伴均分。

public class RockerMQConsumer {
   public static void main(String[] args) throws Exception {
       //实例化消息消费者
       DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("group_luke");
       //指定nameserver地址
       consumer.setNamesrvAddr("127.0.0.1:9876");
       consumer.setPullBatchSize(1);
       consumer.setMessageModel(MessageModel.CLUSTERING);
       //订阅topic
       consumer.subscribe("topic_luke","*");
       // 注册回调实现类来处理从broker拉取回来的消息
       consumer.registerMessageListener(new MessageListenerConcurrently() {
           @SneakyThrows
           @Override
           public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
               for (MessageExt msg : msgs) {
                   System.out.println(new String(msg.getBody()));
                   TimeUnit.SECONDS.sleep(3);
               }
               // 标记该消息已经被成功消费
               return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
           }
       });
       // 启动消费者实例
       consumer.start();
       System.out.printf("Consumer Started.%n");
   }
}

上边的程序启动N个就行

RocketMQ实现随缘分BUG小功能示例详解

生产者:

public class RocketMQProducer {
   public static void main(String[] args) throws Exception {
       //实例化消息生产者对象
       DefaultMQProducer producer = new DefaultMQProducer("group_luke");
       //设置消息过期时间
       producer.setSendMsgTimeout(300000);
       //设置NameSever地址
       producer.setNamesrvAddr("127.0.0.1:9876");
       //启动Producer实例
       producer.start();
       List<String> messages = new ArrayList<>();
       messages.add("WFD-11356");//添加bug号
       messages.add("WFD-11357");//添加bug号
       messages.add("WFD-11358");//添加bug号
       for (String message : messages) {
           //创建消息 指定topic和消息体
           Message msg = new Message("topic_luke", "tag", message.getBytes(StandardCharsets.UTF_8));
           System.out.println(msg.toString());
           //发送消息
           producer.sendOneway(msg);
       }
       //关闭producer
       producer.shutdown();
   }

当生产者启动,将消息发送到RocketMQ的时候,各个消费者将收到消息,这也就决定了这周改哪个bug。

RocketMQ实现随缘分BUG小功能示例详解

RocketMQ实现随缘分BUG小功能示例详解

RocketMQ实现随缘分BUG小功能示例详解

过程很粗制滥造,一个简单的思路,就是说RocketMQ可以实现没有人为干预的均分。当需要均分某些东西的时候,可以使用这个思路。

来源:https://juejin.cn/post/7129904989064953864

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com