Fanout

C#队列学习笔记:RabbitMQ安装及使用

▼魔方 西西 提交于 2020-04-12 09:09:59
原文: C#队列学习笔记:RabbitMQ安装及使用 一、环境搭建 1.1、由于RabbitMQ是使用Erlang语言开发的,因此要安装Erlang运行时环境,下载地址: Erlang官网下载 CSDN分享下载 1.2、去RabbitMQ官网下载 RabbitMQ Server 服务端程序,选择合适的平台版本下载并安装。 RabbitMQ安装时,会自动在Windows服务中创建RabbitMQ服务,并自动启动。 1.3、开始->所有程序->RabbitMQ Server->RabbitMQ Command Prompt (sbin dir): 运行RabbitMQ Command Prompt与cmd下cd C:\Program Files\RabbitMQ Server\rabbitmq_server-3.8.3\sbin的效果是一样的。 1.3.1、sbin目录下的rabbitmqctl.bat,是用来查看和控制服务端状态的。运行rabbitmqctl status检查RabbitMQ状态: 1.3.3、RabbitMQ Server上面也有用户概念,使用rabbitmqctl list_users命令,可以看到目前的用户: 可以看到,现在只有一个名为gues角色为administratort的用户,这个是RabbitMQ默认为我们创建的,它有RabbitMQ的所有权限

C#队列学习笔记:RabbitMQ实现客户端相互通讯

你离开我真会死。 提交于 2020-04-12 09:04:15
原文: C#队列学习笔记:RabbitMQ实现客户端相互通讯 一、引言 fanout类型的Exchange,路由规则非常简单:它会把所有发送到该Exchange的消息,路由到所有与它绑定的Queue中。假设有一个聊天室,各个客户端都订阅在同一fanout exchange type,那每个客户端发送出来的消息,所有的客户端都能收到,因为大家都订阅了。此时,只需要简单地限制一下,只有是与我有关的消息,才在聊天界面上显示。这样,即可达到相互通讯的效果。 二、示例 2.1、环境准备 本示例使用EasyNetQ来实现,请先在NuGet上安装。 2.2、实体类 新建一个实体类MessageBody: public class MessageBody { public string FromUserId { get ; set ; } public string Message { get ; set ; } public string ToUserId { get ; set ; } } 2.3、主窗体 新建一个ChatMain窗体: 代码如下: public partial class ChatMain : Form { public ChatMain() { InitializeComponent(); } /// <summary> /// 客户端 A /// </summary> /

C#队列学习笔记:RabbitMQ基础知识

荒凉一梦 提交于 2020-04-12 09:02:53
原文: C#队列学习笔记:RabbitMQ基础知识 一、引言 RabbitMQ是Rabbit Message Queue的简写,但不能仅仅理解其为消息队列,消息代理更合适。RabbitMQ是一个由 Erlang 语言开发的AMQP(高级消息队列协议)的开源实现,其内部结构如下: RabbitMQ作为一个消息代理,主要和 消息 打交道,负责接收并转发消息。RabbitMQ提供了可靠的消息机制、跟踪机制和灵活的消息路由,支持消息集群和分布式部署。适用于排队算法、秒杀活动、消息分发、异步处理、数据同步、处理耗时任务、CQRS等应用场景。 二、基础概念 讲解基础概念之前,先来构造一个整体结构图,以方便我们更好地去理解RabbitMQ的基本原理。 通过上面这张结构图,能够清晰地了解到Send Message到Receive Message的一个大致流程。 2.1、Queue Queue(队列)在RabbitMQ中的作用是存储消息,队列的特性是先进先出。上图可以清晰地看到Client A和Client B是生产者,生产者生产消息最终被送到RabbitMQ的内部对象Queue中去,而消费者则是从Queue中取出数据,可以简化表示为: 生产者Send Message,“A”被传送到Queue中,消费者发现消息队列Queue中有订阅的消息,就会将这条消息A读取出来进行一系列的业务操作

Spring Boot2.X整合消息中间件RabbitMQ原理简浅探析

雨燕双飞 提交于 2020-04-07 07:29:59
前言 RabbitMQ是一个消息队列,主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用。消息中间件最主要的作用还是解耦,中间件最标准的用法是生产者生产消息传送到队列,消费者从队列中拿取消息并处理,生产者不用关心是谁来消费,消费者不用关心谁在生产消息,从而达到解耦的目的。在分布式的系统中,消息队列也会被用在很多其它的方面,比如:分布式事务的支持,RPC的调用等等。 文章目录 1、简单概述RabbitMQ重要作用 1.1、异步 1.2、解耦 2、简单概述RabbitMQ重要概念 2.1、RabitMQ的工作流程 2.2、交换机 2.3、RabbitMQ关键概念总览简述 3、Spring Boot整合RabbitMQ Spring Boot整合RabbitMQ原理分析 3.1、整合前准备Rabbitmq环境 3.2、搭建依赖环境 3.3、配置 application.properties文件 3.4、编写ApplicationTests测试代码 1、fanout广播方式发送数据观察 2、Topic指定路由键Key规则方式发送数据 3、direct单播方式发送数据 3.5、自定义消息转换规则 3.6、AmqpAdmin 管理组件的使用 1、创建Exchange 2、创建Queue 3、创建Binding 3.7、监听消息@EnableRabbit +

【Spring Boot】19.集成消息

删除回忆录丶 提交于 2020-04-06 22:38:12
消息服务简介 大多应用中,可通过消息服务中间件来提升系统异步通信、扩展解耦能力 具体而言,主要的应用模式有: 异步处理 应用解耦 流量削峰(例如:京东秒杀) 消息服务中两个重要概念 消息代理(message broker) 目的地(destination) 当消息发送者发送消息以后,将由消息代理接管,消息代理保证消息传递到指定目的地。 消息通信机制 消息队列主要有两种形式的目的地 队列(queue):点对点消息通信(point-to-point) 主题(topic):发布(publish)/订阅(subscribe)消息通信 (1)点对点式 消息发送者发送消息,消息代理将其放入一个队列中,消息接收者从队列中获取消息内容,消息读取后被移出队列。也就是说,消息一旦被消费,那么立马删除。 消息只有唯一的发送者和接受者,但并不是说只能有一个接收者 (2)发布订阅式 发送者(发布者)发送消息到主题,多个接收者(订阅者)监听(订阅)这个主题,那么就会在消息到达时同时收到消息。 消息服务规范 JMS(Java Message Service)JAVA消息服务: 基于JVM消息代理的规范。ActiveMQ、HornetMQ是JMS实现 AMQP(Advanced Message Queuing Protocol) 高级消息队列协议,也是一个消息代理的规范,兼容JMS

ActiveMQ —— <一> 概述

别说谁变了你拦得住时间么 提交于 2020-04-06 21:59:34
本文最早发布与本人的博客园 ( https://www.cnblogs.com/libingbin/p/6562007.html ) ,因为项目需要,故决定出一个关于 消息队列ActiveMQ 完整的理论介绍与实际项目应用案例的系列文章! 1 业务需求描述   举例描述:     再警情通报的业务时通过发送消息界面可以选择     警情联络,和船情通报两种消息   发送方式可分为     一对一发送:部门对部门、个人对个人     一对多发送:部门对多部门、个人对多人 2 功能实现设计   基于上述需求描述,在消息传输功能实现上选用activemq进行警情联络消息传输功能的实现。 1. 基础概念   ActiveMQ:是Apache出品,最流行的,能力强劲的开源消息总线。是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现。   JMS(Java消息服务):是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。 2. JMS消息模式   1) 点对点或队列模式   每个消息只能有一个消费者。消息的生产者和消费者之间没有时间上的相关性,无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。  2) Pub/Sub 发布/订阅模式   每个消息可以有多个消费者

springboot项目中使用rabbitmq开发应用

谁说我不能喝 提交于 2020-03-21 01:09:44
3 月,跳不动了?>>> AMQP介绍 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议。 Exchange有Direct、Fanout、Topic、Headers,最常用的是Direct、Fanout、Topic三种类型。 “生产/消费”消息模型 生产者发送消息到broker server(RabbitMQ)。在Broker内部,用户创建Exchange/Queue, 通过Binding规则将两者联系在一起。Exchange分发消息,根据类型/binding的不同分发策略有区别。 消息最后来到Queue中,等待消费者取走。 AMQP messaging 中的基本概念 Broker: 接收和分发消息的应用,RabbitMQ Server就是Message Broker。 Virtual host: 出于多租户和安全因素设计的,把AMQP的基本组件划分到一个虚拟的分组中,类似于网络中的namespace概念。当多个不同的用户使用同一个RabbitMQ server提供的服务时,可以划分出多个vhost,每个用户在自己的vhost创建exchange/queue等。 Connection: publisher/consumer和broker之间的TCP连接。断开连接的操作只会在client端进行

RabbitTMQ实战 高效部署分布式消息队列笔记

戏子无情 提交于 2020-02-29 21:55:58
一、概念部分 1.各种常见MQ比较 ActiveMQ性能和稳定性较差 适用于中小型企业 kaffka不支持事务,对消息的重复、丢失、错误没有严格要求 性能最高 内存存储 RocketMQ java开发的,商业版支持分布式事务 RabbitMQ Erlang开发的,基于AMQP协议实现,稳定性可靠性很高,性能不错 RabbitMQ提供可靠性投递(confirm)、返回模式(return) 2.AMQP协议 1)AMQP(Advanced Message Queuing Protocal,高级消息队列协议) 2)Server:又称Broker,接受客户端的链接,实现AMQP实体服务 3)Channel:网络信道,几乎所有的操作都在Channel中进行,Channel是进行消息读写的通道。客户端可以建立多Channel,每个Channel代表一个会话任务。 用程序会和代理服务器之间创建一条TCP连接,即AMQP信道。信道是建立在真实TCP连接内的虚拟连接,每条信道会被指派一个唯一ID。建立和销毁TCP会话开销很大,信道方式不会给系统TCP栈造成额外负担。 4)Messaage:消息,由标签Properties和承载数据body组成。 5)Virtual host:虚拟主机,用于进行逻辑隔离,是最上层消息路由。 一个Virtual host里面可以有若干个Exchange和Queue

docker for rabbitmq

梦想的初衷 提交于 2020-02-27 12:40:33
################################ docker for rabbitmq ################################ 一. 安装rabbitmq 1.1 docker pull rabbitmq:3.7.17-management 1.2 docker run -d --name rabbitmq3.7.17 -p 5672:5672 -p 15672:15672 -v ~/data/rabbitmq:/var/lib/rabbitmq --hostname myRabbit \ -e RABBITMQ_DEFAULT_VHOST=my_vhost -e RABBITMQ_DEFAULT_USER= admin -e RABBITMQ_DEFAULT_PASS= admin rabbitmq:3.7.17-management 1.3 #设置权限 rabbitmqctl set_permissions -p my_vhost admin '.*' '.*' '.*' 二. rabbitmq 控制台 2.1 帐号密码:见docker run命令中RABBITMQ_DEFAULT_USER、RABBITMQ_DEFAULT_PASS 2.2 进入控制台 http://IP:15672/ ,需要根据业务需要新建queues

rabbitmq系列(一)初识rabbitmq

家住魔仙堡 提交于 2020-02-27 08:31:47
为什么要使用消息中间件 案例:假如我们开发了一个商品抢购网站。这个网站的目的就是在某一时间点进行抢购商品,同时要求用户注册,在注册的时候会同时给用户电话和邮箱中发送验证码,以便完成信息注册。传统做法应该是这样的。两种方式,并行即启用两个线程,当用户提交信息后,分别去发送邮件和发送短信。这种方式很明显比串行的方式更快。当我们加入消息队列后,处理方式如下图: 加入消息中间件后,我们只需要注册信息存库后,给消息队列中添加一条消息就完事了。然后邮件服务和短信服务分别去消费消息即可。 当用户注册完成后,到了抢购商品的时间,大家都去抢购某个商品的时候这个量很大。消息队列可以设置队列长度来保证系统的稳定性。当队列满了的时候,则不再处理这些用户请求。 因此我们可以总结一下消息队列的特点: 异步处理 -- 用户注册信息提交后,直接返回响应。然后邮件服务和短信服务监听到队列有消息后去主动处理 应用解耦 -- 用户注册流程分成了三个服务,注册服务、邮件服务、短信服务互不干扰。 流量削峰 -- 控制用户请求,以防系统奔溃。 常见消息中间件介绍 ActiveMQ :apache出品,能力强劲的开源消息总线,完全支持jms规范的消息中间件。api丰富,在传统行业的中小型企业中应用广泛。缺点:服务性能和数据存储性能不好。 Kafka :apache顶级项目,追求高吞吐量。一开始的目的是用于日志收集和传输