科技新闻

RabbitMQ消息队列之基础 (二)

非 Y 不嫁゛ 提交于 2020-04-02 19:59:40
1,路由模式 direct direct 模式基础概念请参考 RabbitMQ消息队列之基础 (二) direct类型的路由规则很简单,它会把消息路由到那些binding key与routing key完全匹配的Queue中; 也就是说: 只要队列名、交换机、路由key完全一致,就可以匹配到该消息。 这里直接演示代码: 生产者: 1 //direct类型 路由模式 1对1匹配 2 //生产者发送消息时需要指定一个路由键(routingKey),交换机只会把消息转发给包含该路由键的队列 3 //string exchange = "TestMq_Exchange"; //交换机 4 //string routingKey = "TestMq_RoutingKey"; //路由键 5 6 string queueName = "TestMq"; //队列名 7 for (int i = 0; i < 10; i++) 8 { 9 string message = "Hello World:" + i; 10 RabbitMqConfig rabbitMqConfig = RabbitMqConfig.Init(); //初始化配置文件 11 ConnectionFactory connFactory = new ConnectionFactory 12 { 13 Uri = new

ORACLE常用网址

孤者浪人 提交于 2020-04-02 19:35:25
ORACLE常用网址 1、ORACLE官方网站,这个应当大家都该知道吧,大家有空应当多去看看最新消息 [url]www.oracle.com[/url] 以下是ORACLE中国网站 [url]www.oracle.com/cn[/url] 官方网站衍生出来的网站就不少了,以下是Oracle技术网,可以访问Oracle的论坛,下载代码与文档,也可以在这里免费注册一个用户,下载ORACLE数据库。 http://otn.oracle.com/ Oracle与Linux应当是最近的一个发展热题吧,想要了解更多的信息吗?可以访问Oracle的Linux技术中心 http://oss.oracle.com/ Metalink是个不错的地方,但是需要注册,而且不是免费的,需要产品号 http://metalink.oracle.com/ Oracle在线文档是个不错的地方,你可以找到你需要的很多文档 http://tahiti.oracle.com/ Tom,应当很多人都知道的了,那么Ask Tom就是他用来回答常见问题的著名官方站点了 http://asktom.oracle.com/ 2、其实,说起Oracle,国外的站点一般要比国内的站点好,为什么呢?主要就是一个信息的及时性,一般新东西在国外站点上马上就可以找到,而到了国内,则可能需要在几个月之后了

Active MQ 消息队列

孤者浪人 提交于 2020-04-02 08:30:07
目录 1、前言 2、Active MQ简介 3、Active MQ单点部署 1、前言 MQ是 消息中间件 ,是一种在 分布式系统 中 应用程序 借以 传递消息 的 媒介 ,常用的有ActiveMQ,RabbitMQ,kafka。 2、Active MQ简介 ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。 ActiveMQ 是一个完全支持 JMS1.1 和 J2EE 1.4 规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。 官网: http://activemq.apache.org/ 特点: 支持来自Java,C,C ++,C#,Ruby,Perl,Python,PHP的各种跨语言客户端和协议 完全支持JMS客户端和Message Broker中的企业集成模式 支持许多高级功能,如消息组,虚拟目标,通配符和复合目标 完全支持JMS 1.1和J2EE 1.4,支持瞬态,持久,事务和XA消息 Spring支持,以便ActiveMQ可以轻松嵌入到Spring应用程序中,并使用Spring的XML配置机制进行配置 专为高性能集群,客户端 - 服务器,基于对等的通信而设计 支持可插拔传输协议,例如in-VM,TCP,SSL,NIO,UDP,多播,JGroups和JXTA传输

JavaWeb项目架构之Kafka分布式日志队列

与世无争的帅哥 提交于 2020-04-02 06:41:18
架构、分布式、日志队列,标题自己都看着唬人,其实就是一个日志收集的功能,只不过中间加了一个Kafka做消息队列罢了。 kafka介绍 Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 特性 Kafka是一种高吞吐量的分布式发布订阅消息系统,有如下特性: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。 高吞吐量:即使是非常普通的硬件Kafka也可以支持每秒数百万的消息。 支持通过Kafka服务器和消费机集群来分区消息。 支持Hadoop并行数据加载。 主要功能 发布和订阅消息流,这个功能类似于消息队列,这也是kafka归类为消息队列框架的原因 以容错的方式记录消息流,kafka以文件的方式来存储消息流 可以再消息发布的时候进行处理 使用场景 在系统或应用程序之间构建可靠的用于传输实时数据的管道,消息队列功能 构建实时的流数据处理程序来变换或处理数据流,数据处理功能 消息传输流程 相关术语介绍 Broker Kafka集群包含一个或多个服务器

RocketMQ高可用集群

风流意气都作罢 提交于 2020-04-02 06:36:36
集群支持:   RocketMQ天生对集群的支持非常友好 单Master:   优点:除了配置简单没什么优点   缺点:不可靠,该机器重启或宕机,将导致整个服务不可用 多Master:   优点:配置简单,性能最高   缺点:可能会有少量消息丢失(配置相关),单台机器重启或宕机期间,该机器下未被消费的消息在机器恢复前不可订阅,影响消息实时性 多Master多Slave异步模式:   每个Master配一个Slave,有多对Master-Slave,集群采用异步复制方式,主备有短暂消息延迟,毫秒级   优点:性能同多Master几乎一样,实时性高,主备间切换对应用透明,不需人工干预   缺点:Master宕机或磁盘损坏时会有少量消息丢失 多Master多Slave同步模式:   每个Master配一个Slave,有多对Master-Slave,集群采用同步双写方式,主备都写成功,向应用返回成功   优点:服务可用性与数据可用性非常高   缺点:性能比异步集群略低,当前版本主宕备不能自动切换为主。   需要注意的是,在RocketMQ里面,1台机器只能要么是Master,要么是Slave。这个在初始的机器配置里面,就定死了。不会像kafka那样存在master动态选举的功能。其中Master的broker id = 0,Slave的broker id > 0

部署Rabbitmq

爷,独闯天下 提交于 2020-04-01 14:07:21
一、Rabbitmq概念 RabbitMQ是一个开源的靠AMQP协议实现的服务,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 它可以使对应的客户端(client)与对应的消息中间件(broker)进行交互。消息中间件发布者(publisher)那里收到消息(发布消息的应用,也称为producer),然后将他们转发给消费者(consumers,处理消息的应用)。由于AMQP是一个网络协议,所以发布者、消费者以及消息中间件可以部署到不同的物理机器上。 Rabbitmq使用场景: 消息队列在实际应用中常用在异步处理、应用解耦、流量削锋和消息通讯这四个场景。 二、部署Rabbitmq 注:在开始之前,主机名最好为默认的localhosts(如果不是,会在启动rabbitmq时报错,解决方法:重启主机,再启动rabbitmq) 下载 rpm包 (提取码

windows下 安装 rabbitMQ 及操作常用命令

无人久伴 提交于 2020-04-01 07:48:35
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。 1.安装 Erlang 所以在安装rabbitMQ之前,需要先安装Erlang 。 小编使用的是 otp_win64_18.1 ,需要其他版本或者32位系统的,可以去 官网 下载。 全部点击“下一步”就行。 有的选择其他的安装方式,可能需要添加一下系统环境变量(正常安装的也要检查下): 有最好,没有的话就手动添加嘛。 2.安装 RabbitMQ 下载运行 rabbitmq-server-3.6.5 ,需要其他版本或者32位系统的,可以去 官网 下载。 依旧可以不改变默认进行安装。 需要注意:默认安装的RabbitMQ 监听端口是5672 3.配置 激活 RabbitMQ's Management Plugin 使用RabbitMQ 管理插件,可以更好的可视化方式查看Rabbit MQ 服务器实例的状态。 打开命令窗口: 输入命令: "C:\Program Files\RabbitMQ Server\rabbitmq_server-3.6.5\sbin\rabbitmq-plugins.bat" enable rabbitmq

五分钟学后端技术:如何学习Java工程师必知必会的消息队列

我的未来我决定 提交于 2020-03-31 23:01:32
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 什么是消息队列 “RabbitMQ?”“Kafka?”“RocketMQ?”...在日常学习与开发过程中,我们常常听到消息队列这个关键词,可能你是熟练使用消息队列的老手,又或者你是不懂消息队列的新手,不论你了不了解消息队列,本文都将带你搞懂消息队列的一些基本理论。如果你是老手,你可能从本文学到你之前不曾注意的一些关于消息队列的重要概念,如果你是新手,相信本文将是你打开消息队列大门的一板砖。 根据百度百科的说法,“消息队列”是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。队列的主要目的是提供路由并保证消息的传递;如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。` 为什么要使用消息队列 我觉得使用消息队列主要有两点好处: 1.通过异步处理提高系统性能(削峰、减少响应所需时间); 2.降低系统耦合性。如果在面试的时候你被面试官问到这个问题的话,一般情况是你在你的简历上涉及到消息队列这方面的内容,这个时候推荐你结合你自己的项目来回答。 《大型网站技术架构》第四章和第七章均有提到消息队列对应用性能及扩展性的提升。 在我平时的日常工作中,用到消息队列的场景可不少,比如,我有一个定时任务需要在A应用每天7点开始调度,那么定时任务系统如何告诉这个A应用呢

RabbitMQ消息模式2

半腔热情 提交于 2020-03-31 22:48:06
1、消费端限流 2、消息的ACK与重回队列 3、TTL消息 4、死信队列 消费端限流 什么是消费端的限流? 假设一个场景,首先,我们RabbitMQ服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据! 消费端限流 RabbitMQ提供的解决方案 RabbitMQ提供了一种qos(服务质量保证)功能,即在非自动确认消息的前提下,如果一定数目的消息(通过基于Consumer或者Channel设置Qos的值)未被确认前,不进行消费新的消息 Void BasicQos(uint prefetchSize, ushort prefetchCount, bool global); prefetchSize:0 不限制消息大小 prefetchSize:会告诉RabbitMQ不要同时给一个消费者推送多于N个消息,即一旦有N个消息还没有ack,则该Consumer将block(阻塞)掉,直到有消息ack Global:true\false是否将上面设置应用于Channel;简单来说,就是上面限制是Channel级别的还是Consumer级别 注意: prefetchSize和global这两项,RabbitMQ没有实现,暂且不研究; prefetch_count在no_ask=false的情况下生效

为什么要使用消息队列以及消息队列的优缺点

限于喜欢 提交于 2020-03-31 04:35:09
1、为什么要使用消息队列?   (1)解耦   传统模式的缺点:系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!   中间件模式:将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改。   (2)异步   传统模式缺点:一些非必要的业务逻辑以同步的方式运行,太耗时间。   中间件模式:将消息写入消息队列,非必要的业务逻辑以异步的方式运行,以加快响应速度   (3)削峰   传统模式缺点:并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常   中间件模式:系统A慢慢的按照数据库能处理的并发量,从消息队列中慢慢拉取消息。在生产中,这个短暂的高峰期积压是允许的。 2、使用了消息队列会有什么缺点?   分析:一个使用了MQ的项目,如果连这个问题都没有考虑过,就把MQ引进去了,那就给自己的项目带来了风险。我们引入一个技术,要对这个技术的弊端有充分的认识,才能做好防御。   系统的可用性降低:如果消息队列挂了,那么系统也会受到影响   系统的复杂性增加:要多考虑很多方面的问题,比如一致性问题、如何保证消息不被重复消费,如何保证消息可靠传输。因此,需要考虑的东更多,系统的复杂性增大。       来源: https://www.cnblogs.com/jiehanshi/p