消息中间件
日薪灬越亿
这个作者很懒,什么都没留下…
展开
-
消息中间件 -RabbitMQ 集成和实战 (三十)
与Spring集成pom文件 <!-- RabbitMQ --> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifa...原创 2019-12-10 20:14:29 · 137 阅读 · 0 评论 -
消息中间件 -RabbitMQ 控制队列,临时队列,永久队列 (二十九)
临时队列自动删除队列自动删除队列和普通队列在使用上没有什么区别,唯一的区别是,当消费者断开连接时,队列将会被删除。自动删除队列允许的消费者没有限制,也就是说当这个队列上最后一个消费者断开连接才会执行删除。自动删除队列只需要在声明队列时,设置属性auto-delete标识为true即可。系统声明的随机队列,缺省就是自动删除的。单消费者队列普通队列允许的消费者没有限制,多...原创 2019-12-08 21:56:00 · 4545 阅读 · 0 评论 -
消息中间件 -RabbitMQ 消息的拒绝死信交换器DLX (二十八)
RabbitMQ对AMQP规范的一个扩展。被投递消息被拒绝后的一个可选行为,往往用在对问题消息的诊断上。消息变成死信一般是以下几种情况:消息被拒绝,并且设置 requeue 参数为 false 消息过期 队列达到最大长度死信交换器仍然只是一个普通的交换器,创建时并没有特别要求和操作。在创建队列的时候,声明该交换器将用作保存被拒绝的消息即可,相关的参数是x-dead-letter...原创 2019-12-08 20:39:07 · 221 阅读 · 0 评论 -
消息中间件 -RabbitMQ 消息的拒绝Reject和Nack (二十七)
Reject和Nack消息确认可以让RabbitMQ知道消费者已经接受并处理完消息。但是如果消息本身或者消息的处理过程出现问题怎么办?需要一种机制,通知RabbitMQ,这个消息,我无法处理,请让别的消费者处理。这里就有两种机制,Reject和Nack。RejectReject在拒绝消息时,可以使用requeue标识,告诉RabbitMQ是否需要重新发送给别的消费者。不重新发送,...原创 2019-12-08 18:46:28 · 5759 阅读 · 0 评论 -
消息中间件 -RabbitMQ消费者中的事务丶可靠性和性能的权衡 (二十六)
消费者中的事务使用方法和生产者一致事务的实现主要是对信道(Channel)的设置,主要的方法有三个:channel.txSelect()声明启动事务模式; channel.txComment()提交事务; channel.txRollback()回滚事务;在发送消息之前,需要声明channel为事务模式,提交或者回滚事务即可。开启事务后,客户端和RabbitMQ之间的通讯交...原创 2019-12-08 18:19:25 · 423 阅读 · 0 评论 -
消息中间件 -RabbitMQ QoS预取模式 (二十五)
在确认消息被接收之前,消费者可以预先要求接收一定数量的消息,在处理完一定数量的消息后,批量进行确认。如果消费者应用程序在确认消息之前崩溃,则所有未确认的消息将被重新发送给其他消费者。所以这里存在着一定程度上的可靠性风险。这种机制一方面可以实现限速(将消息暂存到RabbitMQ内存中)的作用,一方面可以保证消息确认质量(比如确认了但是处理有异常的情况)。注意:消费确认模式必须是非...原创 2019-12-08 18:14:54 · 687 阅读 · 1 评论 -
消息中间件 -RabbitMQ消息的消费 (二十四)
消息的获得方式拉取Get属于一种轮询模型,发送一次get请求,获得一个消息。如果此时RabbitMQ中没有消息,会获得一个表示空的回复。总的来说,这种方式性能比较差,很明显,每获得一条消息,都要和RabbitMQ进行网络通信发出请求。而且对RabbitMQ来说,RabbitMQ无法进行任何优化,因为它永远不知道应用程序何时会发出请求。对我们实现者来说,要在一个循环里,不断去服务器get消...原创 2019-12-08 17:50:01 · 246 阅读 · 0 评论 -
消息中间件 - RabbitMQ备用交换器(二十三)
在第一次声明交换器时被指定,用来提供一种预先存在的交换器,如果主交换器无法路由消息,那么消息将被路由到这个新的备用交换器。如果发布消息时同时设置了mandatory会发生什么?如果主交换器无法路由消息,RabbitMQ并不会通知发布者,因为,向备用交换器发送消息,表示消息已经被路由了。注意,新的备用交换器就是普通的交换器,没有任何特殊的地方。使用备用交换器,向往常一样,声明Queue和备...原创 2019-12-08 17:31:47 · 273 阅读 · 0 评论 -
消息中间件 - RabbitMQ发送方确认模式(二十二)
事务事务的实现主要是对信道(Channel)的设置,主要的方法有三个:channel.txSelect()声明启动事务模式; channel.txComment()提交事务; channel.txRollback()回滚事务;在发送消息之前,需要声明channel为事务模式,提交或者回滚事务即可。开启事务后,客户端和RabbitMQ之间的通讯交互流程:客户端发送给服务器Tx...原创 2019-12-08 17:13:53 · 215 阅读 · 0 评论 -
消息中间件 -硬件配置对Kafka性能的影响以及集群介绍(四)
磁盘吞吐量/磁盘容量磁盘吞吐量会影响生产者的性能。因为生产者的消息必须被提交到服务器保存,大多数的客户端都会一直等待,直到至少有一个服务器确认消息已经成功提交为止。也就是说,磁盘写入速度越快,生成消息的延迟就越低。磁盘容量的大小,则主要看需要保存的消息数量。如果每天收到1TB的数据,并保留7天,那么磁盘就需要7TB的数据。内存Kafka本身并不需要太大内存,内存则主要是影响消...原创 2019-12-04 21:20:24 · 918 阅读 · 0 评论 -
消息中间件 -Kafka相关配置(三)
Broker配置配置文件放在Kafka目录下的config目录中,主要是server.properties文件常规配置broker.id在单机时无需修改,但在集群下部署时往往需要修改。它是个每一个broker在集群中的唯一表示,要求是正数。当该服务器的IP地址发生改变时,broker.id没有变化,则不会影响consumers的消息情况listeners监听列表(...原创 2019-12-04 21:17:14 · 330 阅读 · 0 评论 -
消息中间件 -Kafka的安装、管理(二)
预备环境Kafka是Java生态圈下的一员,用Scala编写,运行在Java虚拟机上,所以安装运行和普通的Java程序并没有什么区别。安装Kafka官方说法,Java环境推荐Java8。Kafka需要Zookeeper保存集群的元数据信息和消费者信息。Kafka一般会自带Zookeeper,但是从稳定性考虑,应该使用单独的Zookeeper,而且构建Zookeeper集群。下载...原创 2019-12-04 21:05:55 · 103 阅读 · 0 评论 -
消息中间件 - Kafka基本概念 (一)
什么是Kafkakafka最初是LinkedIn的一个内部基础设施系统。最初开发的起因是,LinkedIn虽然有了数据库和其他系统可以用来存储数据,但是缺乏一个可以帮助处理持续数据流的组件。所以在设计理念上,开发者不想只是开发一个能够存储数据的系统,如关系数据库、Nosql数据库、搜索引擎等等,更希望把数据看成一个持续变化和不断增长的流,并基于这样的想法构建出一个数据系统,一个数据架构。...原创 2019-12-04 20:36:19 · 283 阅读 · 1 评论 -
消息中间件 - rabbitmq 失败确认(mandatory标志)(二十一)
消息发布时的权衡失败确认在发送消息时设置mandatory标志,告诉RabbitMQ,如果消息不可路由,应该将消息返回给发送者,并通知失败。可以这样认为,开启mandatory是开启故障检测模式。注意:它只会让RabbitMQ向你通知失败,而不会通知成功。如果消息正确路由到队列,则发布者不会受到任何通知。带来的问题是无法确保发布消息一定是成功的,因为通知失败的消息可能会丢失。...原创 2019-11-14 15:56:25 · 820 阅读 · 0 评论 -
消息中间件 - 原生Java客户端进行消息通信(Topic模式)(二十)
通过使用“*”和“#”,使来自不同源头的消息到达同一个队列,”.”将路由键分为了几个标识符,“*”匹配1个,“#”匹配一个或多个。例如日志处理:假设有交换器log-exchange,日志级别有error,info,warning,应用模块有user,order,email,服务器有 A、B、C、D路由键的规则为 服务器+“.”+日志级别+“.”+应用模块名,如:A. info...原创 2019-11-14 15:38:14 · 402 阅读 · 0 评论 -
消息中间件 - 原生Java客户端进行消息通信(Fanut模式)(十九)
消息广播到绑定的队列参见代码no-spring模块包cn.enjoyedu.exchange.fanout中:通过测试表明,不管我们如何调整生产者和消费者的路由键,都对消息的接受没有影响。消费者:public class Consumer1 { public static void main(String[] argv) throws IOException, ...原创 2019-11-14 15:20:30 · 158 阅读 · 0 评论 -
消息中间件 - 原生Java客户端进行消息通信(Direct模式)(十八)
DirectDirectProducer:direct类型交换器的生产者public class DirectProducer { public final static String EXCHANGE_NAME = "direct_logs"; public static void main(String[] args) throws IOE...原创 2019-11-14 14:56:10 · 167 阅读 · 0 评论 -
消息中间件 - RabbitMQ安装(十七)
RabbitMQ在Windows下安装和运行1、下载Erlang:http://www.erlang.org/downloads/19.22、下载Windows版RabbitMq:http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6.exe3、安装并配置环境变量:增加变量...原创 2019-11-14 11:03:44 · 119 阅读 · 0 评论 -
消息中间件 -RabbitMQ概述(十六)
AMQP概论 AMQP是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。目标是实现一种在全行业广泛使用的标准消息中间件技术,以便降低企业和系统集成的开销,并且向大众提供工业级的集成服务。主要实现有 RabbitMQ。包括的要素生产者、消费者、消息生产者:消息的创建者,发送...原创 2019-11-14 11:02:31 · 190 阅读 · 0 评论 -
消息中间件 - ActiveMQ高级特性和用法-消费者集群下需要考虑的问题(十一)
我们现实中往往有这样的需求:1. 消息接收方和发送方都是集群。2. 同一个消息的接收方可能有多个集群进行消息的处理。3. 不同集群对于同一条消息的处理不能相互干扰。希望可以达到如下的效果:对于集群消息,采用单独采用queue或者topic都不满足要求。采用Queue模型导致:单独的queue,消息可能被其他集群消费采用Topic模型导致,采用topic消息...原创 2019-11-13 17:04:42 · 324 阅读 · 0 评论 -
消息中间件 - ActiveMQ高级特性和用法-Mirrored Queue 镜像队列(了解即可)(十)
ActiveMQ每一个queue中消息只能被一个消费者消费,然而,有时候,你希望能够监视生产者和消费者之间的消息流。MirroredQueue: Broker会把发送到某一个队列上的所有消息转发到一个名称类似的topic,因此监控程序只需要订阅这个topic.为启用MirroredQueue,首先要将BrokerService的useMirroredQueues属性设置为true:<...原创 2019-11-13 14:21:14 · 302 阅读 · 0 评论 -
消息中间件 - ActiveMQ高级特性和用法-死信队列(九)
用来保存处理失败或者过期的消息。出现下面情况时,消息会被重发:事务会话被回滚。 事务会话在提交之前关闭。 会话使用CLIENT_ACKNOWLEDGE模式,并且Session.recover()被调用。 自动应答失败当一个消息被重发超过最大重发次数(缺省为6次,消费者端可以修改)时,会给broker发送一个"有毒标记“,这个消息被认为是有问题,这时broker将这个消息发送到...原创 2019-11-13 11:30:38 · 423 阅读 · 0 评论 -
消息中间件 - ActiveMQ高级特性和用法-通配符式订阅(八)
Wildcards 用来支持联合的名字分层体系(federated name hierarchies)。它不是JMS 规范的一部分,而是ActiveMQ 的扩展。ActiveMQ 支持以下三种wildcards:·"." 用于作为路径上名字间的分隔符。·"*" 用于匹配路径上的任何名字。·">" 用于递归地匹配任何以这个名字开始的destination。订阅者可以...原创 2019-11-12 17:57:58 · 229 阅读 · 0 评论 -
消息中间件 - ActiveMQ高级特性和用法-消息的可靠性(八)
消息的可靠性消息发送成功后,接收端接收到了消息。然后进行处理,但是可能由于某种原因,高并发也好,IO阻塞也好,反正这条消息在接收端处理失败了。而点对点的特性是一条消息,只会被一个接收端给接收,只要接收端A接收成功了,接收端B,就不可能接收到这条消息,如果是一些普通的消息还好,但是如果是一些很重要的消息,比如说用户的支付订单,用户的退款,这些与金钱相关的,是必须保证成功的,那么这个时候要怎么处...原创 2019-11-12 17:35:32 · 382 阅读 · 0 评论 -
消息中间件 - ActiveMQ高级特性和用法-消息存储的持久化(七)
ActiveMQ的另一个问题就是只要是软件就有可能挂掉,挂掉不可怕,怕的是挂掉之后把信息给丢了,怎么办,可以进行消息的持久化,ActiveMQ提供了几种持久化方式:AMQ消息存储-基于文件的存储方式,它具有写入速度快和容易恢复的特点。消息存储在一个个文件中,文件的默认大小为32M,如果一条消息的大小超过了32M,那么这个值必须设置大一点。当一个存储文件中的消息已经全部被消费,那么这个文件将被...原创 2019-11-12 16:50:43 · 219 阅读 · 0 评论 -
ActiveMQ持久化消息到数据库的坑——Table 'activemq.ACTIVEMQ_ACKS' doesn't exist.
分析问题 查看ActiveMQ官网发现这样的解释:Specified key was too long; max key length is 1000 bytes is the error not allowing the creation of ACTIVEMQ_ACKSYou are probably using utf8/some other multibyte encoding...原创 2019-11-12 16:12:56 · 338 阅读 · 0 评论 -
消息中间件 - ActiveMQ高级特性和用法-嵌入式MQ(六)
嵌入式MQ生成/** * 类说明:嵌入式MQ */public class EmbedMQ { public static void main(String[] args) throws Exception { BrokerService brokerService = new BrokerService(); brokerService.set...原创 2019-11-11 17:24:56 · 595 阅读 · 0 评论 -
消息中间件 - ActiveMQ Springboot (五)
application.propertiesspring.activemq.broker-url=tcp://localhost:61616spring.activemq.user=adminspring.activemq.password=adminspring.activemq.pool.enabled=trueimport org.apache.activemq.Act...原创 2019-11-11 16:24:53 · 158 阅读 · 0 评论 -
消息中间件 - ActiveMQ SpringMVC使用 (四)
和Spring的结合1、增加Maven配置2、生产者在spring的配置中增加ActiveMQ相关配置,包括命名空间3、生产者在代码中编写发送逻辑,可以topic模式,也可queue模式4、消费者在spring的配置中增加ActiveMQ相关配置,包括命名空间5、消费者在代码中编写接收逻辑,可以topic模式,也可queue模式生产者:<?xml versi...原创 2019-11-11 10:30:38 · 133 阅读 · 0 评论 -
消息中间件 - ActiveMQ安装、部署和运行,原生API代码 (三)
ActiveMQ安装、部署和运行 下载 Windows版 ActiveMQ,解压,运行bin目录下的activemq.bat即可。Linux下操作类似(进入bin目录运行./activemqstart启动,./activemqstop关闭)。下载地址:http://activemq.apache.org/activemq-580-release.html运行后在浏览器中访问http...原创 2019-11-09 15:36:51 · 112 阅读 · 0 评论 -
消息中间件 - JMS规范 (二)
JMS(Java Messaging Service)是Java平台上有关面向消息中间件的技术规范,实际上是一套api,它便于消息系统中的Java应用程序进行消息交换,并且通过提供标准的产生、发送、接收消息的接口简化企业应用的开发,ActiveMQ而是这个规范的一个具体实现。JMS规范JMS对象模型1)连接工厂。连接工厂负责创建一个JMS连接。2)JMS连接。JMS连接(Conne...原创 2019-11-06 17:31:41 · 161 阅读 · 0 评论 -
消息中间件概述(一)
什么是消息中间件?消息中间件(MQ)的定义其实并没有标准定义。一般认为,消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成。为什么要用消息中间件?假设一个电商交易的场景,用户下单之后调用库存系统减库存,然后需要调用物流系统进行发货,如果交易、库存、物流是属于一个系统的,那么就是接口调用。但...原创 2019-11-06 17:27:09 · 165 阅读 · 0 评论