zoukankan      html  css  js  c++  java
  • 转: 利用RabbitMQ、MySQL实现超大用户级别的消息在/离线收发

    由于RabbitMQ中只有队列(queue)才能存储信息,所以用RabbitMQ实现超大用户级别(百万计)的消息在/离线收发需要对每一个用户创建一个永久队列。

    但是RabbitMQ节点内存有限,经测试后发现节点集群也无法满足数百万用户队列收发数据的要求,所以最终决定采用数据库辅助实现该功能。

    一、数据库结构

    user_list数据库下有4张表:user_info、group_info、groupmember_info、message_info。

    user_info表中含有username(主键,非空,VARCHAR(50))、password(非空,VARCHAR(50))、routingkey(非空,VARCHAR(50))、has_queue(INT UNSIGNED)四个字段。

    group_info表中含有groupname(主键,非空,VARCHAR(50))、password(非空,VARCHAR(50))、creator(非空,VARCHAR(50))三个字段。

    groupmember_info表中含有username(主键,非空,VARCHAR(50))、groupname(主键,非空,VARCHAR(50))两个字段。

    message_info表中含有sendtime(非空,VARCHAR(50))、body(非空,VARCHAR(300)),receiver(非空,VARCHAR(50))、sender(非空,VARCHAR(100))四个字段。

    二、客户端结构

    1、文件夹创建以及包依赖安装:

    dotnet new console --name Client
    mv Client/Program.cs Client/Client.cs
    cd Client
    dotnet add package RabbitMQ.Client
    dotnet add package MySql.Data dotnet restore

    2、项目结构

    Client.cs(主程序):
     View Code

     UserLogin.cs:

     View Code

     UserInfo.cs:

     View Code

     GenerateKey.cs: 

     View Code

     Consumer.cs:

     View Code

     KeyListening.cs:

     View Code

     MQHelper.cs:

     View Code

     UserLogout.cs:

     View Code
    百度云链接:https://pan.baidu.com/s/1Y93rcqnsv1cA9ZIxH2xrBw 密码:zfc5
  • 相关阅读:
    【java】对象赋值给另一个对象
    spring boot系列(五)spring boot 配置spring data jpa (查询方法)
    Spring Data JPA 查询
    Spring Data JPA 介绍
    OpenID简介
    OAUTH协议介绍
    URL encoding(URL编码)
    RESTful 介绍
    spring boot系列(四)spring boot 配置spring data jpa (保存修改删除方法)
    spring boot 启动报 java.lang.NoClassDefFoundError: ch/qos/logback/core/spi/LifeCycle 错误
  • 原文地址:https://www.cnblogs.com/saryli/p/9742756.html
Copyright © 2011-2022 走看看