
消息队列【RabbitMQ】
文章平均质量分 79
.NET跨平台
比较认真。编程就是算法和数据结构,算法和数据结构是编程的灵魂。
展开
-
RabbitMQ Management指标说明
主要是对RabbitMQ的管理页面参数做详细说明。管理页面主要分为一下几个模块。OverView(概览)、Connections(连接)、Channels(通道)、Exchanges(交换机)、Queues(队列)、Admin(管理)转载 2024-07-18 23:34:35 · 1698 阅读 · 0 评论 -
使用 docker-compose 安装搭建 RabbitMQ 集群
在利用 Docker 创建 rabbitmq 容器之前,先了解 rabbitmq 的基础知识。转载 2024-07-17 23:04:50 · 797 阅读 · 0 评论 -
RabbitMQ 存储机制
在将消息从 Delta 转移到 Q3 的过程中,是按照索引分段读取的,首先读取某一段,然后判断读取的消息的个数与 Delta 中消息的个数是否相等,如果相等,则可以判定此时 Delta 中已无消息,则直接将 Q2 和刚读取到的消息一并放入到 Q3 中;即使是持久化的消息,在被写入磁盘的同时也会在内存中驻留一份备份。惰性队列会将接收到的消息直接存入文件系统中,而不管是持久化的或者是非持久化的,这样可以减少了内存的消耗,但是会增加 I/O 的使用,如果消息是持久化的,那么这样的 I/O 操作不可避免,转载 2024-07-16 00:02:56 · 422 阅读 · 0 评论 -
rabbitMQ配置文件
rabbitMq有三个配置文件,分别为主配置文件(rabbitmq.conf),Erlang术语格式配置文件(advanced.config)、环境变量配置文件(rabbitmq-env.conf)。在Linux使用二进制安装rabbitmq3.8版本,默认没有配置文件。需要自己创建文件放上去。rabbitmq3.8版本默认配置文件位置下。rabbitmq-env.conf主要配置rabbitmq的环境变量的,如配置和文件的地址。rabbitmq.conf主要配置RabbitMQ服务器和插件。转载 2024-07-13 23:31:16 · 2936 阅读 · 0 评论 -
RabbitMQ在Linux上的安装和相关配置
25672端口用于节点间和CLI工具通信(Erlang分发服务器端口),并从动态范围分配(默认情况下仅限于单个端口,计算方式为AMQP 0-9-1和AMQP 1.0端口+20000),默认情况下通过。上面的示例将更改RabbitMQ监听AMQP0-9-1和AMQP 1.0协议客户端的连接端口从。工具通信的分发端口,另外一种是通过设置RabbitMQ服务器和客户端之间通信端口并计算得到。的配置文件示例,它包含你可能想要设置的大多数配置项的示例(省略了一些非常模糊的匹配项)。Rabbitmq部分配置项说明。转载 2024-06-19 01:37:21 · 1620 阅读 · 0 评论 -
Ubuntu中安装RabbitMQ
消息队列一般用于系统间对接,能够降低系统耦合度。通过将消息的发送和接收分离来实现应用程序的异步和解耦。数据分发非阻塞操作或推送通知(如邮件、短信提醒等)实现发布/订阅,异步处理工作队列RabbitMq作为一款消息队列产品,它由Erlang语言开发,实现AMQP(高级消息队列协议)的开源消息中间件。转载 2024-06-06 22:51:43 · 396 阅读 · 0 评论 -
基于Docker部署RabbitMQ集群
最开始我们介绍了如何安装及运行 RabbitMQ 服务, 不过这些是单机版的, 无法满足目前真实应用的要求. 如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等情况, 该怎么办 单台 RabbitMQ 服务器可以满足每秒 1000 条消息的吞吐量, 那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞吐量呢 购买昂贵的服务器来增强单机 RabbitMQ 的性能显得捉襟见肘, 搭建一个RabbitMQ 集群才是解决实际问题的关键 .这时候 再查看 ip:15672。转载 2024-05-19 14:45:31 · 268 阅读 · 0 评论 -
RabbitMQ性能优化
就算在64位操作系统下,32位的进程只能用2GB内存。当Erlang的垃圾回收机制运行起来(这是一个非常耗费资源的工作),会消费两倍内存。(默认是80%的内存)。这样可以保证RabbitMQ可以再任何时候,将内存中的数据置换到磁盘中来。通常时间为10秒每次,当限制快被达到时候,RabbitMQ检查的时候会达到。,那么不会发生内存换页的情况,也就是说,当内存超过总内存的。当RabbitMQ不能识别你的系统的时候,你必须对。不能识别系统的时候,会设置内存为1024MB。,那么我们实际可以使用的内存为3GB。转载 2024-05-04 23:14:21 · 292 阅读 · 0 评论 -
Rabbitmq卡顿有哪些原因?
要解决 RabbitMQ 卡顿问题,您需要仔细检查系统的配置、监控性能指标,识别问题的根本原因,然后采取相应的措施来优化和调整系统,以确保稳定和高性能的消息传递。原创 2023-10-01 20:56:58 · 2474 阅读 · 0 评论 -
RabbitMQ一些常用的命令
这些命令可以用于获取 RabbitMQ 实例的各种状态信息,例如队列、交换器、连接、通道等的状态,从而帮助进行监控和管理 RabbitMQ 实例。更多的命令和选项可以通过。命令时,需要具有足够的权限,并且谨慎操作,以避免对 RabbitMQ 实例造成不必要的影响。以下是一些常用的 RabbitMQ 控制台命令(使用。的官方文档进行查阅和学习。原创 2023-06-06 17:25:54 · 5940 阅读 · 0 评论 -
NServiceBus VS MassTransit
近段时间在看SOA,在国外网站有很多资料可以查看,本来在中文网站中找到一片关于这两个框架的对比介绍的可惜笔者没有认真翻译,只有花点时间自己翻译了一个版本,希望对技术界的朋友有所帮助。最近我没有这么多的时间去关注了,所以我认为两个系统在替代生态系统都有它们自己对的和自己的关注地方。的许可模式可以足够灵活的去适应任何预算,在大部分的客户频谱上显示,这样对管理也合乎情理。的原创作者,我显然更倾向于选择自己的技术,所以我会尽我所能试着让它更稳定。的监视和调试工具可以获得,这些工具在你的基于消息的系统上。转载 2022-12-19 16:12:38 · 309 阅读 · 0 评论 -
RabbitMQ一个优秀的.NET消息队列框架
1 简介RabbitMQ有成千上万的用户,是最受欢迎的开源消息代理之一。1.1 AMQP是什么AMQP(高级消息队列协议)是一个网络协议。它支持符合要求的客户端应用(application)和消息中间件代理(messaging middleware broker)之间进行通信。1.2 消息队列是什么MQ 全称为Message Queue, 消息队列。是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。2 安装通过docker转载 2022-04-26 19:41:44 · 991 阅读 · 0 评论 -
EasyNetQ使用(七)【发布者确认 ,用Future Publish发布预定中事件 】
AMQP发布消息默认情况下是非事务性的,不能确保你的消息真正送达代理。AMQP可以去指定事务性发布,但是RabbitMQ这样会非常慢,我们没有让EasyNetQ API去支持此功能。为了高效的确保投递成功,RabbitMQ推荐使用'Publish Confirms'。简单来讲,这是AMQP的一个扩展,当你的消息被代理成功接收以后,提供了一个回调支持。成功接收意味着什么呢?一个瞬态消息被确认那一刻,转载 2018-02-24 17:16:00 · 1903 阅读 · 0 评论 -
RabbitMQ 官方NET教程(三)【发布/订阅】
上一篇博客中,我们实现了工作队列,并且我们的工作队列中的一个任务只会发给一个工作者,除非某个工作者未完成任务意外被杀死,会转发给另外的工作者。在这部分中,我们会做一些完全不同的事情 - 我们会向多个消费者传递信息。这种模式被称为“发布/订阅”。为了说明这个模式,我们要建立一个简单的日志记录系统。它将包括两个程序 - 第一个将发出日志消息,第二个将接收并打印它们。在我们的日志系统中,每一个运行的接收者转载 2017-06-01 16:10:19 · 1788 阅读 · 1 评论 -
简单易用的.NET免费开源RabbitMQ操作组件EasyNetQ解析
对于目前大多的.NET项目,其实使用的技术栈都是差不多,估计现在很少用控件开发项目的了,毕竟一大堆问题。对.NET的项目,目前比较适合的架构ASP.NET MVC,ASP.NET WebAPI,ORM(较多Dapper.NET或者其扩展,稍大一些的项目用EF等等),为了提高速度也会采用缓存(.NET自带的Memcache,或者Redis),请求较多的项目,使用Nginx做负载均衡和使用队列等等。...转载 2018-11-30 12:55:11 · 2881 阅读 · 0 评论 -
EasyNetQ使用(九)【非泛型的发布&订阅扩展方法,发生错误的情况 】
自从EasyNetQ第一个版本开始,它就可以发布/订阅特定类型的消息。bus.Subscribe<MyMessage>("subscriptionId", x => Console.WriteLine(x.Text));bus.Publish<MyMessage>(theMessage);但是,在运行期间,你怎么去发现消息类型?例如:你可能有一些系统加载外部插件,希望能订阅他们自己的转载 2018-02-26 17:00:24 · 1687 阅读 · 0 评论 -
RabbitMQ学习之延时队列
在实际的业务中我们会遇见生产者产生的消息,不立即消费,而是延时一段时间在消费。RabbitMQ本身没有直接支持延迟队列功能,但是我们可以根据其特性Per-Queue Message TTL和 Dead Letter Exchanges实现延时队列。也可以通过改特性设置消息的优先级。1.Per-Queue Message TTLRabbitMQ可以针对消息和队列设置TTL(过期时间)。队列中的消息过期转载 2018-01-23 14:40:47 · 660 阅读 · 0 评论 -
RabbitMQ 6种应用场景
最近业务需要使用Rabbitmq工作队列实现任务的负载分发1.1、什么是RabbitMQ?RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息。1.2、什么是AMQP?AMQ转载 2018-01-23 14:00:06 · 7830 阅读 · 0 评论 -
RabbitMQ的应用场景以及基本原理介绍
1.背景RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现。2.应用场景2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信,传统的做法有两种 1.串行的方式; 2.并行的方式(1)串行方式:将注册信息写入数据库后,发送注册邮件,再发送注册短信,以上三个任务全部完成后才返回给客户端。 这有一个问题是,邮件,短信并不是必须的转载 2018-01-23 13:16:13 · 597 阅读 · 0 评论 -
RabbitMQ .NET消息队列使用入门(一)【简单示例】
首先下载安装包,我都环境是win7 64位:去官网下载 otp_win64_19.0.exe 和rabbitmq-server-3.6.3.exe安装好然后开始编程了:(1)创建生产者类: using System;using System.Text;using RabbitMQ.Client;namespace MQSamples.Publisher{ ...原创 2016-08-02 13:55:34 · 12394 阅读 · 0 评论 -
RabbitMQ 官方NET教程(六)【RPC】
我们的RPC当客户端启动时,它创建一个匿名独占回调队列。replyTo,它被设置为回调队列和,被设置为每个请求的唯一值。请求被发送到rpc_queue队列。RPC worker(aka:server)正在等待队列上的请求。当请求出现时,它将执行该作业,并使用replyTo字段中的队列将结果发送回客户端。客户端等待回调队列中的数据。当信息出现时,它会检查属性。如果它与请求中的值相匹配,则返回对应用程序的响应。翻译 2017-06-03 12:24:21 · 1528 阅读 · 1 评论 -
RabbitMQ 官方NET教程(五)【Topic】
在上一个教程中,我们改进了我们的日志记录系统。我们使用direct类型转发器,使得接收者有能力进行选择性的接收日志,,而非fanout那样,只能够无脑的转发虽然使用direct类型改进了我们的系统,但它仍然存在一些局限性 - 它不能够基于多重条件进行路由选择。在我们的日志记录系统中,我们可能不仅要根据严重性订阅日志,还可以基于发出日志的源进行订阅。您可能会从unix工具syslog 中了解此概念,该工具根据严重性()和设备()转发日志。这将给我们带来很大的灵活性 - 我们可能想要订阅来自cron。翻译 2017-06-03 11:40:41 · 1005 阅读 · 1 评论 -
RabbitMQ 官方NET教程(四)【路由选择】
在上一个教程中,我们构建了一个简单的日志记录系统。我们能够广播日志消息给所有你的接收者。在本教程中,我们将为其添加一个功能 - 我们将让日志接收者可以仅订阅一部分消息。例如,我们将能够仅将关键的错误消息写入到日志文件(以节省磁盘空间),同时仍然能够在控制台上打印所有日志消息。翻译 2017-06-02 14:21:57 · 1052 阅读 · 1 评论 -
RabbitMQ 官方NET教程(二)【工作队列】
这篇中我们将会创建一个工作队列用来在工作者(consumer)间分发耗时任务。工作队列的主要任务是:避免立刻执行资源密集型任务和避免必须等待其完成。相反地,我们进行任务调度:我们把任务封装为消息发送给队列。工作进行在后台运行并不断的从队列中取出任务然后执行。当你运行了多个工作进程时,任务队列中的任务将会被这些工作进程共享执行。这样的概念在web应用中极其有用,当在很短的HTTP请求间需要执行复杂的任务。翻译 2017-05-31 14:51:16 · 1181 阅读 · 1 评论 -
RabbitMQ 官方NET教程(一)【介绍】
本教程假定RabbitMQ已在标准端口(5672)上的localhost上安装并运行。如果使用不同的主机,端口或凭据,连接设置将需要调整。RabbitMQ是一个消息代理:它接受并转发消息。 您可以将其视为邮局:当您将要发布的邮件放在邮箱中时,您可以确信Postman先生最终会将邮件发送给收件人。 在这个比喻中,RabbitMQ是一个邮箱,邮局和邮递员。RabbitMQ和邮局之间的主要区别在于它不处翻译 2017-05-30 23:10:24 · 4054 阅读 · 1 评论 -
Pika使用入门(二)【连接到RabbitMQ与回调传递风格】
连接到RabbitMQ与回调传递风格当您使用异步适配器连接到RabbitMQ时,您正在编写面向事件的代码。 连接适配器将阻塞正在观看的IOLoop,当pika应从其读取数据并向RabbitMQ写入数据时。 因为您现在阻止了IOLoop,所以当特定事件发生时,您将收到回拨通知。 示例代码在这个例子中,有三个步骤发生: 1.设置与RabbitMQ的连接 2.启动IOLoop 3.原创 2017-03-28 16:51:52 · 3214 阅读 · 0 评论 -
Pika使用入门(一)【介绍】
介绍Pika是AMQP 0-9-1协议的纯Python实现,试图保持与底层网络支持库相当独立。 支持Python 2.6+和3.3+。 由于线程不适合每一种情况,它不需要线程。 也不要禁止他们。 greenlets, callbacks, continuations and generators也是如此。 然而,它不一定是线程安全的,实际的结果可能会有些不同。。 人们可能正在使用 direct原创 2017-03-27 15:04:28 · 17168 阅读 · 6 评论 -
RabbitMQ-官方指南-rabbitmqctl(1) 指南
名称rabbitmqctl — 用于管理中间件的命令行工具语法rabbitmqctl [-n node] [-t timeout] [-q] {command} [command options…]描述RabbitMQ是AMQP的实现, 后者是高性能企业消息通信的新兴标准. RabbitMQ server是AMQP 中间件健壮的,可扩展的实现.rabbitmqctl 用来管理RabbitMQ中间件的转载 2017-03-20 15:58:08 · 7747 阅读 · 2 评论 -
RabbitMQ界面管理和命令管理
RabbitMQ vhost管理RabbitMQ vhost 全称为Virtual Host(虚拟主机),一个broker里可以开设多个vhost,用作不同用户的权限分离。权限控制组,用户只能关联到一个vhost上,一个vhost中可以有若干个Exchange和Queue,默认的vhost是”/” 一、通过RabbitMQ管理后台管理vhosthttp://localhost:15672/#/vho转载 2017-03-20 15:53:46 · 6723 阅读 · 0 评论 -
RabbitMQ .NET消息队列使用入门(二)【多个队列间消息传输】
实体类:DocumentType.cs public enum DocumentType { //日志 Journal = 1, //论文 Thesis = 2, //会议文件 Meeting = 3 }MessageModel.cs public class MessageModel原创 2017-03-14 15:28:40 · 4362 阅读 · 1 评论 -
RabbitMQ学习 .NET Client之RPC
Remote procedure call (RPC)(using the .NET client)在第二个教程second tutorial 中我们已经了解到了工作队列如何将耗时任务分配给多个workers。但是假如我们需要在远端机器上面运行一个函数并且等待结果返回呢?这通常叫做RPC,即远端过程调用。这里我们将用RabbitMQ构造一个RPC系统,客户端请求调用服务端的计算斐波纳契数列值得一个函转载 2017-03-15 10:45:58 · 1432 阅读 · 0 评论 -
EasyNetQ使用(十)【用EasyNetQ.Hosepipe重新提交错误信息】
EasyNetQ.Hosepipe是EasyNetQ队列管理工具。用来取回队列中的消息并重新发布这些消息。还可以用它来检测错误队列,并重试发布消息。用法EasyNetQ.Hosepipe.exe <command> [<option:value> ..]命令dump 转存队列中的所有消息到一个指定的目录中。 注意:这将为每一个消息创建三个文件: 消息体:转载 2018-02-26 17:01:18 · 1478 阅读 · 0 评论 -
何时该用RabbitMQ,何时该用Apache Kafka?
人们是如何做决定的呢?日常生活中,每当人们做出复杂或重大决定时,情绪往往起到最终的决定作用。但对于决策专家来说,他们的每一个决定都具有长远影响,因此做决定不能只靠冲动了。通常,高效率的执行者只会在他们凭借自发的专业思维掌握决策所需的所有信息之后,才靠本能、直觉或情绪做出决策。如今,市场上有几十种消息传递技术、数不清的 ESB 以及将近 100 家 iPaaS 供应商,那么如何选择适合自己的转载 2018-02-26 17:03:01 · 1335 阅读 · 0 评论 -
如何从发布者和消费者方面使用rabbitmq进行恢复
建立使用官方的RabbitMQ docker容器并通过运行启动队列docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 -p 5672:5672 rabbitmq:3-management在发布者拥有队列的那一刻,通过启动它,将创建队列并使用他们自己的路由键定义两个主题。...转载 2018-07-21 21:57:32 · 773 阅读 · 0 评论 -
RabbitMQ .NET消息队列使用入门(四)【RabbitMQ用法大全】
一.Hello World生产者using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading;using RabbitMQ.Client;using RabbitMQ.Client.Framing.Impl;namespace ...转载 2018-07-21 13:55:35 · 1453 阅读 · 0 评论 -
RabbitMQ .NET消息队列使用入门(五)【RabbitMQ例子】
生产者using RabbitMQ.Client;using System;using System.Text;using RabbitMQHelper;using System.Collections.Generic;using RabbitMQ.Client.MessagePatterns;using RabbitMQ.Client.Events;using System.D...转载 2018-07-24 23:03:16 · 585 阅读 · 0 评论 -
RabbitMQ防止消息丢失
1.简介RabbitMQ中,消息丢失可以简单的分为两种:客户端丢失和服务端丢失。针对这两种消息丢失,RabbitMQ都给出了相应的解决方案。2.防止客户端丢失消息如图,生产者P向队列中生产消息,C1和C2消费队列中的消息,默认情况下,RabbitMQ会平均的分发消费给C1C2(Round-robin dispatching),假设一个任务的执行时间非常长,在执行过程中,客户端挂了(...转载 2018-07-08 16:15:14 · 2397 阅读 · 0 评论 -
解决RabbitMQ消息丢失与重复消费问题
背景最近用户反馈提交的SQL查询一直处于长时间等待状态,经过排查观察,发现部分查询请求丢失,导致用户提交的查询未被正常接收,继而长时间无响应。现象:集市SQL控制台提交10个简单SQL查询 -&amp;amp;gt; 消息发送方:发送10条消息至消息队列 -&amp;amp;gt; 消息消费方:只消费了7条消息 2. 现状 2.1. 当前SQL查询的整体流程1生产者:PHP: 将用户的SQL查询记...转载 2018-07-08 15:35:07 · 4431 阅读 · 1 评论 -
CentOS7下RabbitMQ服务安装配置
RabbitMQ是流行的开源消息队列系统,是AMQP(Advanced Message Queuing Protocol高级消息队列协议)的标准实现,用erlang语言开发。RabbitMQ据说具有良好的性能和时效性,同时还能够非常好的支持集群和负载部署,非常适合在较大规模的分布式系统中使用,具体特性还在验证中,待检验。由于项目需要,安装并配置了RabbitMQ,服务器操作系统是CentOS7。具体转载 2018-04-12 22:24:16 · 355 阅读 · 0 评论 -
RabbitMQ消息队列-Centos7下安装RabbitMQ3.6.1
如果你看过前两章对RabbitMQ已经有了一定了解,现在已经摩拳擦掌,来吧动手吧!用什么系统本文使用的是Centos7,为了保证对linux不太熟悉的伙伴也能轻松上手(避免折在安装的路上),下面是我的系统镜像地址:https://pan.baidu.com/s/1gfl6Y9l 养成良好的习惯,安装好系统运行更新:yum update -yreboot //一般情况不用重启,个人习惯。有人问如果转载 2018-04-12 22:22:05 · 305 阅读 · 0 评论