message queue -- 11




1 2

200x200


概述rabbitmq 是目前使用最为普及的消息队列组件,基于 AMQP 的 rabbitmq 在各方面设计都比较完善,同时,它具有非常丰富的功能与特性

#技术帖    #技术分享    #rabbitmq    #消息队列   
概述在项目开发的过程中,遇到了一个奇怪的问题,使用原生的 com.rabbitmq.client 包操作 rabbitmq,失败率高达近 50%,超时非常严重经过仔细排查,发现是在创建 channel 的阶段耗时过长,那么,这究竟是为什么呢?经过阅读源码,我们看到 com.rabbitmq.client 的 Connection 在创建 Channel 的过程中通过 synchronized 关键字使用了锁,致使同一个 connection 上的所有线程同时只能有一个执行 channel 的创建过程,而其他线程需要阻塞等待这一过程的完成,这也就造成了超时的产生那么,如何解决这个问题呢?我们是否可以让所有的线程去共享和使用同一个 channel 呢?他们共享同一个 channel 也就不需要分别创建,因此就不会陷入对锁的争夺和等待了通过查阅官方文档,在com.rabbitmq.client Interface Channel中提到: While a Channel can be used by mu
#技术帖    #龙潭书斋    #技术分享    #rabbitmq   

200x200


概述上一篇日志中,我们搭建起了 rabbitmq 的集群RabbitMQ 集群搭建 本文中,我们重点来介绍一下集群的配置 rabbitmq 节点类型改

#技术帖    #龙潭书斋    #rabbitmq    #集群   

200x200


概述在前面的日志中,我们介绍了 RabbitMQ 的分布式架构 broker:分布式架构 Broker 简介在 RabbitMQ 中,一个或几个&nb

#rabbitmq    #集群    #消息队列    #分布式   

200x200


基本架构及协议分布式架构 Broker 简介AMQP 消息服务应用协议 rabbitmq 安装及使用rabbitmq 的安装和监控rabbitmq exchange 的四种模式与点

#技术帖    #龙潭书斋    #技术分享    #rabbitmq   
概述此前的博客中,我们介绍了 rabbitmq 的安装、使用,然而最重要的,rabbitmq 的配置一直都没有讲解,因为 rabbitmq 安装后会有一些自动配置,通常我们无需进行任何额外配置就可以直接使用接下来我们要进入 rabbitmq 集群的介绍中,rabbitmq 的配置是必不可少的,因此,在本文中,主要介绍一下 rabbitmq 的配置方法 rabbitmq 的配置文件rabbitmq 有三种配置方式:环境变量配置文件运行时参数 环境变量环境变量是通过 /etc/rabbitmq/rabbitmq-env.conf 进行配置的,这个文件的路径和文件名是不可以更改的,也不会自动创建,如果你需要自己配置相应环境变量,就需要手动创建它在这个文件中,你可以进行预设的几个环境变量的配置,类似:#example rabbitmq-env.conf file entries #Rename the node NODENAME=bunny@myhost #Config file location and new filename bunnies.config CONFIG_FILE=/etc/rabbitmq/testdir/bu
#技术帖    #config    #配置    #技术分享   

200x200


概述上一篇日志中我们介绍了一种流行的 Broker 分布式架构:分布式架构 Broker 简介rabbitmq 就是在 broker 架构的基础上实现

#技术帖    #技术分享    #rabbitmq    #消息队列   
消息队列此前已经介绍了 XSI PIC 的基本概念和一些用法XSI IPC 简介  这里我们介绍一下 XSI IPC 中的消息队列消息队列简称队列,其标识符被称为队列 ID(queue ID) 消息被添加到队列尾端,包含一个正长整型类型字段,一个非负长度以及实际数据字节消息队列并不一定要以先进先出次序取消息,也可以按照消息的类型字段取消息 消息队列结构 -- msqid_dsstruct msqid_ds { struct ipc_perm msg_perm; // ipc 权限结构 msgqnum_t msg_qnum; // 队列中的数据数 msglen_t msg_qbytes; // 队列的最大字节容量 pid_t msg_lspid; // 最近插入队列数据的进程 ID pid_t msg_lrpid; // 最近取出数据的进程 ID time_t msg_stime; // 最近入队时间 time_t msg_rtime; // 最近出队时间 time_t msg_ctime; // 最近更新时间 ... ... }  该结构描述了队列的当前状态,各系统的具体实现会包含额外的字段
#读书笔记    #技术帖    #龙潭书斋    #apue   
概述有三种 IPC 被称为“XSI IPC”:消息队列信号量共享内存 他们之间有很多相似之处 标识符和键每个内核中的 IPC 结构(消息队列、信号量、共享内存)都用一个非负整数的标识符加以引用与文件描述符不同,IPC 标识符不是小的整数,当一个 IPC 结构被创建,与该结构相关的标识符连续加 1,直到达到整型最大数值,然后再从 0 开始加 由于标识符的数字难以使用和记忆,因此标识符仅被作为 IPC 对象的内部名,而“键”则是 IPC 对象的外部名供程序使用,键是 key_t 类型的数据,定义于 sys/type.h 中,通常为长整型外部调用使用键,由内核转化为标识符 但是,当客户进程与服务端进程通信的过程中,怎么保证“键”与标识符及 IPC 结构在服务端进程与客户进程之间会合呢?主要有下列方法:服务器进程可以指定键 IPC_PRIVATE 创建一个新的 IPC 结构(键 IPC_PRIVATE 保证服务器进程创建的 IPC 结构是一个新的结构),将返回的标识
#读书笔记    #技术帖    #龙潭书斋    #套接字   
1 2



京ICP备15018585号