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

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

以前公司的产品已经上线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

标签:RocketMQ,随缘,BUG
0
投稿

猜你喜欢

  • SpringBoot 上传文件判空以及格式检验流程

    2023-01-19 05:07:36
  • 浅谈Android开发中项目的文件结构及规范化部署建议

    2022-05-13 12:47:37
  • Java设计模式之java备忘录模式详解

    2023-08-22 19:31:07
  • 学习Java内存模型JMM心得

    2023-11-28 20:56:17
  • 实战SpringBoot集成JWT实现token验证

    2022-10-07 15:57:49
  • 教你如何监控 Java 线程池运行状态的操作(必看)

    2023-02-09 04:34:13
  • 10种简单的Java性能优化

    2023-06-20 20:43:41
  • java(jdk)环境变量配置(XP、win7、win8)图文教程详解

    2021-11-01 15:06:48
  • 浅谈JVM内存溢出原因和解决思路

    2023-11-23 12:24:15
  • 如何利用IDEA搭建SpringBoot项目整合mybatis实现简单的登录功能

    2022-01-15 06:14:59
  • mybatis的插件机制示例详解

    2023-02-24 23:46:17
  • 解决使用ProcessBuilder踩到的坑及注意事项

    2023-11-24 01:37:55
  • 详解如何在Spring Security中自定义权限表达式

    2023-11-08 05:11:24
  • java日期操作工具类(获取指定日期、日期转换、相隔天数)

    2023-11-28 06:42:53
  • Java 根据网址查询DNS/IP地址的方法

    2023-06-21 15:31:54
  • 详解Java中多进程编程的实现

    2021-12-22 01:46:06
  • 浅谈virtual、abstract方法和静态方法、静态变量理解

    2022-08-29 02:29:14
  • MyBatis-Plus实现多数据源的示例代码

    2023-11-11 12:58:11
  • spring定时任务执行两次及tomcat部署缓慢问题的解决方法

    2022-12-27 09:53:25
  • Maven配置多仓库无效的解决

    2023-11-29 04:37:10
  • asp之家 软件编程 m.aspxhome.com