美文网首页java专题
使用rabbitmq过程中的小经验--消息分发器

使用rabbitmq过程中的小经验--消息分发器

作者: H_Man | 来源:发表于2018-04-23 21:16 被阅读10次

    写代码期间遇到一个问题,在我自己的服务里面,对一个送礼的消息需要进行多个业务操作,而且后期还要继续增加针对送礼事件的业务操作

    我的第一反应直接接收送礼消息,然后在消息处理器中累加代码,但是考虑到服务的可维护性和热插拔性,这样只会在业务迭代的过程中累积下来过多的废旧代码,不利于代码的维护和后期开发,为了不给以后埋坑,思考许久,设计了一个小小的消息分发器,分享给大家

    public interface SendGiftEventProcessor {
    
        void processSendGiftEvent(SendGiftEventevent);
    
        @Component
        class Dispatcher {
    
            private static final Logger LOGGER = LoggerFactory.getLogger(Dispatcher.class);
    
            @Autowired
            private List<SomeEventProcessor> processors;
    
            //消息触发
            @Event("SEND_GIFT")
            void onSomeEvent(SendGiftEvent event) {
                for (SomeEventProcessor processor : processors) {
                    try {
                        processor.processSomeEvent(event);
                    } catch (Exception e) {
                        LOGGER.error("process SomeEvent error.", e);
                    }
                }
            }
        }
    }
    
    
    /**
     * @author HMAN
     * @createTime 2018/4/23
     * @description 排行榜-->送礼消息逻辑实现
     */
    @Component
    public class RankSendGiftEventProcessor implements SendGiftEventProcessor {
    
        @Override
        public void processSendGiftEvent(SendGiftEvent event) {
    
        }
    }
    
    /**
     * @author HMAN
     * @createTime 2018/4/23
     * @description 任务-->送礼消息逻辑实现
     */
    @Component
    public class TaskSendGiftEventProcessor implements SendGiftEventProcessor {
    
        @Override
        public void processSendGiftEvent(SendGiftEvent event) {
    
        }
    }
    
    

    设计思路: 定义一个接口SomeEventProcessor ,内部写一个内部类处理器Dispatcher ,用来接收并处理消息,在Dispatcher 内部使用spring的依赖注入,将所有实现SomeEventProcessor 接口的实现类注入到处理器中,每次处理器接收到这个mq事件之后,循环processors,并且调用processSomeEvent方法,即可实现消息的分发处理

    如代码所示:成功将排行榜和任务两个同时针对送礼消息的消息处理器接藕,在日后维护中,若不需要维护排行榜或者任务,则直接删掉class即可

    相关文章

      网友评论

        本文标题:使用rabbitmq过程中的小经验--消息分发器

        本文链接:https://www.haomeiwen.com/subject/muhrlftx.html