RocketMQ實(shí)現(xiàn)隨緣分BUG小功能示例詳解
正文
以前公司的產(chǎn)品已經(jīng)上線20多年了,主要是維護(hù),也就是改bug。每周我們Team會從Jira上拿我們可以改的bug,因?yàn)槊總€團(tuán)隊(duì)負(fù)責(zé)的業(yè)務(wù)范圍不一樣,我們團(tuán)隊(duì)只能改我們自己業(yè)務(wù)范圍的。這樣每周大概有20個左右的新bug,假如團(tuán)隊(duì)一共10個人,那么均分就是每人兩個,改完下班。
但是這BUG肯定有難有簡單,大家肯定都愿意改簡單的,在家辦公,任務(wù)量完了不就等于放假么。開始是自己給自己搶,就忒卷,是歐美項(xiàng)目,所以客服晚上報(bào)出來的bug多。有的哥們早上5點(diǎn)起來看有沒有新的簡單的。
這對那些反應(yīng)慢的兄弟不公平。領(lǐng)導(dǎo)分的話,就是能者多勞了,累的累死,閑的閑死。所以我們就需要一個隨機(jī)的分bug小工具,正所謂聽天由命,富貴在天。
實(shí)現(xiàn)過程
首先來n個消費(fèi)者,n就是需要分的人數(shù)。
這里需要將這些消費(fèi)者全部放入同一個group,這樣這些bug會均分給這些消費(fèi)者,而且當(dāng)某個同事請假沒有來的時(shí)候,那么就不啟動自己的消費(fèi)者,這樣就是其他小伙伴均分。
public class RockerMQConsumer {
public static void main(String[] args) throws Exception {
//實(shí)例化消息消費(fèi)者
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","*");
// 注冊回調(diào)實(shí)現(xiàn)類來處理從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);
}
// 標(biāo)記該消息已經(jīng)被成功消費(fèi)
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
}
});
// 啟動消費(fèi)者實(shí)例
consumer.start();
System.out.printf("Consumer Started.%n");
}
}
上邊的程序啟動N個就行

生產(chǎn)者:
public class RocketMQProducer {
public static void main(String[] args) throws Exception {
//實(shí)例化消息生產(chǎn)者對象
DefaultMQProducer producer = new DefaultMQProducer("group_luke");
//設(shè)置消息過期時(shí)間
producer.setSendMsgTimeout(300000);
//設(shè)置NameSever地址
producer.setNamesrvAddr("127.0.0.1:9876");
//啟動Producer實(shí)例
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) {
//創(chuàng)建消息 指定topic和消息體
Message msg = new Message("topic_luke", "tag", message.getBytes(StandardCharsets.UTF_8));
System.out.println(msg.toString());
//發(fā)送消息
producer.sendOneway(msg);
}
//關(guān)閉producer
producer.shutdown();
}
當(dāng)生產(chǎn)者啟動,將消息發(fā)送到RocketMQ的時(shí)候,各個消費(fèi)者將收到消息,這也就決定了這周改哪個bug。



過程很粗制濫造,一個簡單的思路,就是說RocketMQ可以實(shí)現(xiàn)沒有人為干預(yù)的均分。當(dāng)需要均分某些東西的時(shí)候,可以使用這個思路。
以上就是RocketMQ實(shí)現(xiàn)隨緣分BUG小功能示例詳解的詳細(xì)內(nèi)容,更多關(guān)于RocketMQ隨緣分BUG的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在js與java中判斷json數(shù)據(jù)中是否含有某字段的案例
這篇文章主要介紹了在js與java中判斷json數(shù)據(jù)中是否含有某字段的案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
基于 SpringBoot 實(shí)現(xiàn) MySQL 讀寫分離的問題
這篇文章主要介紹了基于 SpringBoot 實(shí)現(xiàn) MySQL 讀寫分離的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
springboot+springmvc+mybatis項(xiàng)目整合
這篇文章主要為大家詳細(xì)介紹了springboot+springmvc+mybatis項(xiàng)目的整合,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
后端返回各種圖片形式在前端的轉(zhuǎn)換及展示方法對比
這篇文章主要給大家介紹了關(guān)于后端返回各種圖片形式在前端的轉(zhuǎn)換及展示方法對比的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-06-06
Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件
這篇文章主要介紹了Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09
淺談Spring Cloud下微服務(wù)權(quán)限方案
這篇文章主要介紹了淺談Spring Cloud下微服務(wù)權(quán)限方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-06-06

