zoukankan      html  css  js  c++  java
  • ASP.NET Core基于RabbitMQ实现海量消息队列分发实战演练

    一、需求背景

    明人不说暗话,跟着阿笨一起玩NET。今天我们要解决的一个实际工作中的业务需求场景问题:如何将M条的消息或者任务,尽可能的保证平均分发给N个消费者进行处理。业务上要求保证尽可能的消息的平均分布,同时消息队列中的同一条消息,必须保证只能给一个消费者进行消费处理,即不允许被重复进行消费。通俗一点就是我们要解决鸡蛋与篮子的存放数学问题:如何将10(M)个鸡蛋放在5(N)个篮子中呢?

    1.1、本次分享课程适合人群如下

    1)、有一定的.NET Core开发基础。

    2)、有一定的Docker和RabbitMQ基础知识。

    3)、学习和了解.Net Core跨平台开发技术。

    1.2、一句话总结今天我们要学习的目标?

    如何基于RabbitMQ消息队列来实现海量消息任务分发。

    如果您同样对本次分享《ASP.NET Core基于RabbitMQ实现海量任务消息队列分发实战演练》课程感兴趣的话,那么请跟着阿笨一起学习吧。废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。

    二、快速利用Docker构建RabbitMQ容器环境

    为什么要使用Docker,Docker的好处是什么?
    可以认为Docker是一个通用安装程序。简单来说,利用Docker容器,可以将任何一个或者多个程序封装起来,并提供标准的管理接口。因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这样,开发人员负责维护内容,并使用Docker进行封装,系统管理人员利用Docker的标准接口进行部署和管理。

    Docker最近很火,所以就打算使用。大家根据自身情况,如果是刚开始学习的RabbitMQ话,这里还是建议大家先安装在Windows系统或者是Linux系统上。

    docker run -d --name aben-rabbitmq -p 15672:15672 -p 5671:5671 -p 5672:5672 rabbitmq:management此时,我们可以访问如下地址来访问自带的Web管理页面:

     http://192.168.137.237:15672/

     默认账号/密码:guest/guest

    三、在线源码实战演练讲解

    1、尽可能的公平的分发消息到不同的队列中去,保证其平均分发、平均分布。

    答:可以采用取模算法和简单的轮询算法。

    2、如何尽可能的保证公平分发机制,避免消息被重复消费。

    答:每一个消费者只订阅自己所属编号的消息队列即可。

    四、总结

    假如现在每个客户端的消息处理能力不同,那么如何根据客户端的消息处理能力的高低来实现消息的分批呢?简单一点说就是实现多劳多得,能者多劳。

    答案:可以采用加权平均算法,从而可以实现消息的分批根据每个客户端的权重来分发任务。

    我们学习一门技术,最好先弄明白该技术解决的业务场景是什么,然后带着需求问题去学习和实践。

    希望本次分享课程能够让大家有所收获!最后送大家一句话:希望大家在.NET Core的学习道路上一直跟着阿笨坚持下去。

     
  • 相关阅读:
    A1066 Root of AVL Tree (25 分)
    A1099 Build A Binary Search Tree (30 分)
    A1043 Is It a Binary Search Tree (25 分) ——PA, 24/25, 先记录思路
    A1079; A1090; A1004:一般树遍历
    A1053 Path of Equal Weight (30 分)
    A1086 Tree Traversals Again (25 分)
    A1020 Tree Traversals (25 分)
    A1091 Acute Stroke (30 分)
    A1103 Integer Factorization (30 分)
    A1032 Sharing (25 分)
  • 原文地址:https://www.cnblogs.com/51net/p/12240580.html
Copyright © 2011-2022 走看看