`
zuroc
  • 浏览: 1318547 次
  • 性别: Icon_minigender_1
  • 来自: 江苏
社区版块
存档分类
最新评论

自己实现 message queue 的思路

阅读更多
先写一个思路 有空来写着玩

基于ICE和Mysql的message queue

基本流程:

== 服务器端 ==
class Task:
    table_id
    id
----------------------
1.写数据到数据库
2.Mq.add(task)
    写入任务表
    检查是否有idle client
        有
            开一个线程
                try:
                    update 任务表的任务 为对应的client
                    try:
                        idle_client.process(task)
                    except:
                        取消任务表的任务认领状态
                    else:
                        任务表.delete(i)
                        if not buffer:
                            从数据库中取没有人认领数据填入
                        if buffer:
                            idle_client.process(task)
                        else:
                            idle_client_list.add(idle_client)
                            结束线程
        无  加入buffer

   

== 客户端 ==

接受到服务器端发来的任务:
    do(i)

== 表结构 ==

任务表结构 id table_id id client

以下3个表需要做进程内缓存:

task类别的表 id table_name
client表结构 id client地址
表 <-> 处理函数的表 id 函数名

1
0
分享到:
评论
2 楼 zuroc 2008-10-17  
可惜不能持久化
1 楼 heipn 2008-10-17  
ICE有自己的消息队列机制

相关推荐

    PHP中利用redis实现消息队列处理高并发请求思路详解.rar

    Redis作为一款高性能的键值数据库,常被用于构建消息队列,因为它提供了丰富的数据结构(如列表、集合、通道等)和原子操作,非常适合于实现消息的发布与订阅、入队与出队等操作。 在PHP中,我们可以使用Predis或...

    rocketmq4.9.4源码包文件

    - **顺序消息**:RocketMQ支持顺序消息,通过分配特定的Message Queue来实现。 - **定时与延时消息**:消息可以设置延迟时间,到达指定时间后才会被消费。 - **分布式事务消息**:RocketMQ提供了分布式事务消息的...

    android2.2.3里面的handler源码,可用于学习,或用于java、javafx等项目,作为线程消息队列使用。.zip

    在这个版本中,Handler类及其相关组件的设计,是通过消息队列(MessageQueue)和消息循环(MessageLoop)来实现的。Handler在创建时会与当前线程的消息队列关联,在该线程的消息队列中插入一个消息,当消息到达队列头部...

    深入理解Android II样章

    - **MessageQueue**:MessageQueue是Android消息传递机制的核心组成部分之一,负责存储和管理消息队列。本章将详细讨论MessageQueue的数据结构、消息的插入与获取算法、Looper循环机制等关键内容。 2. **...

    技术方案资料技术方案资料Android开发实战经典-030905-消息机制-C-范例:时钟显示视频教程.zip

    消息机制在Android系统中通常通过Handler、Looper和MessageQueue这三者协同工作来实现。Handler作为消息的处理器,负责发送和处理Message和Runnable对象。Looper类则是为特定线程维护消息队列的循环体,它使得该线程...

    Go-用500行Golang代码实现高性能的消息回调中间件

    在本文中,我们将深入探讨...当然,实际的代码实现会更复杂,需要考虑到更多的边界条件和优化点,但上述内容为初学者提供了一个大致的实现思路。通过学习和实践,你可以进一步完善这个中间件,满足更复杂的业务需求。

    rocketMQ-master.zip

    5. Message Queue:消息队列是RocketMQ中的基本概念,每个Topic可以包含多个Message Queue,消息会被均匀分配到不同的Message Queue中。 6. Topic:主题是消息的分类,Producer发送的消息需要指定一个Topic,...

    java jms 源码都在其中

    - **Message Queue(队列)**:FIFO(先进先出)结构,保证消息顺序,每个消息仅被一个消费者接收。 - **Topic(主题)**:发布/订阅模式,多个消费者可以订阅同一主题,发布的消息会被所有订阅者接收。 - **...

    PETSHOP架构分析

    【PETSHOP架构分析】 ...它的设计思路和实现方法对于.NET开发者来说具有很高的参考价值,有助于提升开发效率和软件质量。无论是对于新手还是经验丰富的开发者,PETSHOP都是一个极好的学习和研究案例。

    基于java的聊天系统的设计于实现软件源码+论文文档说明资料.zip

    6. **消息队列**:为了处理并发请求和异步通信,系统可能采用了消息队列(Message Queue)机制,如ActiveMQ或RabbitMQ,这有助于提高系统的可扩展性和可靠性。 7. **数据库存储**:聊天记录可能需要持久化存储,...

    从现实生活中理解android_线程消息机制

    ##### 3.1 实现思路 - **线程分离**:使用一个独立的线程来处理歌词的同步,避免阻塞UI线程。 - **消息传递**:通过Handler将歌词的更新消息从歌词处理线程发送到UI线程,由UI线程负责更新界面。 - **时间同步**:...

    Labview win8界面设计 面向对象

    3. **消息队列(Message Queue)**:每个演员都有自己的消息队列,用于接收和处理消息。 4. **并发(Concurrency)**:演员可以并发运行,提高了系统的并行处理能力。 通过使用Actor Framework,开发者可以更好地...

    用VC实现特定编辑框上对回车键响应

    每个应用程序都有一个消息队列(message queue),用于存放各种消息。消息队列中消息的结构包含了窗口句柄、消息标识号、消息参数等信息。应用程序通过消息循环(message loop)从消息队列中取出消息并传递给相应的窗口...

    基于Java语言的MQ消息队列设计源码示例

    Java消息队列(Java Message Queue, 简称Java MQ)是一种应用程序间的通信方法,允许数据在两个或多个应用程序之间传递,提供异步处理机制,从而提高应用程序的可伸缩性和可靠性。在企业级应用中,消息队列被广泛...

    15-消息中间件MQ面试题.docx

    消息中间件(Message Queue,简称MQ)是一种消息传递机制,允许不同的应用程序或系统之间进行数据交换。MQ具有解耦、异步、削峰等优点,可以减少系统耦合度,提高系统的可扩展性和可靠性。 为什么使用MQ? MQ的优点...

    聊天小程序

    【聊天小程序】是一款基于MQ(Message Queue,消息队列)技术构建的轻量级聊天应用程序,主要用于在Linux操作系统环境下提供通信功能。这个程序的设计理念是为了让开发者能够学习和借鉴其核心技术,以便在自己的项目...

    基于Java的Porter数据同步中间件设计源码

    中间件的设计原理主要基于消息队列(Message Queue)模式,这种设计允许Porter接收来自不同数据源的请求,然后将任务分发到后台处理,避免了前端的阻塞。这一机制在处理大规模并发请求时尤为有效,保证了系统的响应...

    RocketMQ官方项目添加自学源代码注释_RocketMQ.zip

    - Message Queue:消息存储的基本单位,生产者发送的消息都会被分配到一个队列中,消费者从队列中拉取消息进行消费。 本项目的自学源代码注释,对于初学者来说是一份宝贵的资料,可以帮助他们快速掌握RocketMQ的...

    操作系统(OS)进程通信相关文献

    在操作系统设计中,进程通信机制有多种类型,包括管道(Pipe)、消息队列(Message Queue)、信号量(Semaphore)、共享内存(Shared Memory)、套接字(Socket)以及信号(Signal)等。 1. **管道**:管道是一种...

Global site tag (gtag.js) - Google Analytics