`
tjuxiaoqiang
  • 浏览: 25918 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

kestrel 源码分析之二 QueueCollection消息队列管理

阅读更多
前一篇已经对Kestrel的启动类进行了说明,我们看到在启动类中定义了一个QueueCollection,这个类主要用在内存中维护用户定义的队列。
def loadQueues() {
    Journal.getQueueNamesFromFolder(path) map { queue(_) }
  }

def queue(name: String): Option[PersistentQueue] = synchronized {
    if (shuttingDown) {
      None
    } else {
      Some(queues.get(name) getOrElse {
        // only happens when creating a queue for the first time.
        val q = if (name contains '+') {
          val master = name.split('+')(0)
          fanout_queues.getOrElseUpdate(master, new mutable.HashSet[String]) += name
          log.info("Fanout queue %s added to %s", name, master)
          buildQueue(master, name, path.getPath)
        } else {
          buildQueue(name, name, path.getPath)
        }
        q.setup
        queues(name) = q
        q
      })
    }
  }

val config = queueConfigMap.getOrElse(name, defaultQueueConfig)
    log.info("Setting up queue %s: %s", realName, config)
    new PersistentQueue(realName, path, config, timer, journalSyncTimer, Some(this.apply))


上文中说到Kestrel启动的时候首先实例化一个对象,然后调用QueueCollection.loadQueues();函数,根据上面的代码我们可以看到,这个函数主要是从文件系统中找到所有的队列持久化文件,并调用queue函数。我们发现这个类为每个队列创建创建了一个PersistentQueue类,并调用PersistentQueue类的setup方法,这个方法主要是回放这个队列对应的持久化文件,具体的操作下节介绍。

另外该类中还有一些对队列的操作方法,如add,remove等操作方法。
分享到:
评论

相关推荐

    Kestrel持久化队列服务器

    Kestrel是一款高性能、轻量级的消息队列系统,最初由Twitter开发并开源。它主要被设计用来处理实时流数据,提供了一个简单的基于HTTP的API来发送和接收消息。Kestrel的一个关键特性是其持久化能力,这使得即使在...

    征服 Kestrel

    通过阅读和分析源码,我们可以深入理解web服务器的工作原理,如如何处理请求和响应、如何进行TCP连接管理、如何实现异步I/O等。源码的结构清晰,易于理解和调试,可以帮助开发者定制自己的服务器行为或者优化性能。 ...

    征服 Kestrel + XMemcached

    Kestrel是一个高性能、异步的分布式消息队列,而XMemcached则是一个广泛使用的Java客户端,用于连接到Memcached缓存服务器。在这里,我们将会探讨这两个技术的基本概念、它们在IT领域的应用以及如何将它们结合使用。...

    在.NET 6.0上使用Kestrel配置和自定义HTTPS.doc

    IIS 充当起了反向代理,将流量转发给 Kestrel 并管理 Kestrel 进程。在 Linux 上,我们通常使用 NGINX 作为 Kestrel 的反向代理。 三、设置 Kestrel 在 ASP.NET Core 3.0 及更高版本,Kestrel 属于框架默认的配置...

    征服 Kestrel + XMemcached + Spring TaskExecutor

    首先,Kestrel是一个开源的、基于内存的分布式消息队列系统,它主要由Twitter开发并维护。Kestrel以其高吞吐量和低延迟而著名,被广泛用于构建实时处理系统和微服务架构。它的核心特性包括持久化、多客户端支持以及...

    kesterl源文件包

    kestrel项目源文件包

    ASP.NET Core Kestrel 中使用 HTTPS (SSL)

    在ASP.NET Core中,如果在Kestrel中想使用HTTPS对站点进行加密传输,可以按照如下方式  申请证书  这一步就不详细说了,有免费的和收费的,申请完成之后会给你一个*.pfx结尾的文件。  添加NuGet包  nuget中...

    MF00676-WMS仓库仓储管理系统源码.zip

    Asp.net Core MVC开发WMS仓库仓储管理系统源码 开发语言 : C# 数据库 : SQL2014 开发工具 : VS2019 源码类型 : WebForm 注意:不带技术支持,有帮助文件,虚拟商品,发货不退,看好再拍。 相关技术 Asp.net Core Mvc...

    message_system_test_report.rar_ActiveMQ java_activemq_httpsqs_me

    同时,测试报告可能会对比分析不同消息队列在特定场景下的优缺点,为选择适合的队列服务提供参考。 总的来说,了解和掌握这些消息队列的使用和性能测试对于优化分布式系统的架构、提高系统效率和稳定性具有重要意义...

    Kestrel框架的使用demo

    **二、Kestrel的配置** 在ASP.NET Core项目中,可以通过`Program.cs`或`Startup.cs`文件来配置Kestrel。以下是一些常见的配置选项: 1. **端口设置**:通过`UseUrls`方法指定Kestrel监听的端口,例如:`...

    kestrel-task-executor:Kestrel + XMemcached + Spring TaskExecutor

    这个项目名为"kestrel-task-executor",它结合了Kestrel消息队列、XMemcached缓存客户端以及Spring的TaskExecutor框架,构建了一个强大的任务处理平台。以下将详细解析这个项目的组成部分和它们如何协同工作。 1. *...

    Python库 | kestrel-lang-1.0.5.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:kestrel-lang-1.0.5.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    addlog-kestrel

    addlog-kestrel

    ASP.NET源码——Abis权限管理系统源码.zip

    这个"ASP.NET源码——Abis权限管理系统源码.zip"压缩包提供了Abis权限管理系统的完整源代码,对于学习和理解ASP.NET开发,尤其是权限管理机制具有很高的价值。 源码分析: 1. **ASP.NET架构**:Abis系统基于ASP...

    kestrel.node:Node.js 的 Kestrel 客户端

    红隼节点Node.js 的 Kestrel 客户端安装 npm install kestrel.node用法 var Kestrel = require ( 'kestrel.node' ) ;var client = new Kestrel ( 'localhost:22133' ) ;// get can optionally take a timeout in ...

    web服务器KestrelHttpServer.zip

    在`KestrelHttpServer-master`压缩包中,包含了项目的源代码,开发者可以通过阅读和学习这些代码来了解Kestrel的内部工作原理,或者进行二次开发。通常,部署一个Kestrel服务器的步骤包括: 1. 创建一个新的ASP.NET...

    PermissionBase权限管理系统 v0.1.2 源码_aspcomputter.zip

    3. **源码分析**:源码分析对于学习系统设计和架构,以及进行二次开发或自定义功能至关重要。源码可能包含以下组件: - 数据库交互层:使用ADO.NET或其他ORM(如Entity Framework)来处理数据操作。 - 业务逻辑层...

    Kestrel:Kestrel是在I386上运行的实验内核-开源

    Kestrel是不是Unix或Windows的内核。

    (源码)基于ASP.NET Core的学校管理系统.zip

    本项目是一个基于ASP.NET Core框架开发的学校管理系统,旨在提供一个快速、高效的管理平台,用于处理学校中的各种事务,包括学生管理、教师管理、课程管理、专业管理等。项目采用了ASP.NET Core的Web主机、Kestrel...

Global site tag (gtag.js) - Google Analytics