ActiveMQ集群搭建 简述activemq提供了多种方式来保证activemq的可靠性。包括:纯Master/SlaveShared File System Master SlaveJDBC Master SlaveBroker clusters-静态Broker clusters-动态(基于组播,动态发现brokers)但单纯的使用上面的一种没法既达到高可用,同时有具有负载均衡的能力。生产环境集...
ActiveMQ静态网络连接 前言使用静态网络连接(static networkConnector)可以将多个broker连接起来,作为一个集群对外提供服务。我们假定有amq1和amq2配置了静态网络连接,那么当一个消费者连接到amq2,当生产者发送消息到amq1时,amq2将会作为amq1的一个消费者,将消息转移到amq2,然后投递给连接到amq2的消费者;反之亦然。对于queue,由于一条消息只能被一个消费者消费,所以...
ActiveMQ目的地特性之组合目的地 从ActiveMQ1.1开始,支持一种被称为组合目标的技术。这允许使用单个虚拟的JMS目的地来表示一个JMS目的地的集合。例如,你可以使用组合目的地在一个操作中将消息发送到12个物理队列。或再一次操作中将消息发送到一个主题和一个队列。可以在创建目的地或将目的地注册到JNDI时,使用逗号分隔将多个目的地组合起来。比如:FOO.A,FOO.B,FOO.C表示3个不同的目的地。这可以与队列或...
ActiveMQ之消息分发策略 分发策略queue的分发策略可插拔的分发策略只适用于topic。queue的分发策略比较固定:轮询(默认)或按照严格顺序。同时我们也应该了解prefect的意义。ActiveMQ的prefetch缺省参数是针对处理大量消息时的高性能和高吞吐量而设置的,因此默认的prefect值很大,默认的分发策略会尽快尝试将预取缓冲区填满(prefetch buffers)。然而在有些情况下,例如只有少量...
ActiveMQ处理积压的消息 如果消费者变为慢速消费者,那么后面可能会导致消息积压,导致生产者速度也变慢,甚至停止。我们可以配置消息的过期时间,并设置消息过期丢弃策略,以及使用死信队列来处理消息的积压。为持久化消息设置过期时间ActiveMQ提供了一个timeStampingBrokerPlugin插件,通过此插件,我们可以为持久化消息设置过期时间。参考:http://activemq.apache.org/timesta...
ActiveMQ之订阅恢复策略 简介生产者在某个topic发送了多条消息后,这个时候非持久订阅者才订阅,那么它是不能获取之前生产者发送的信息的。或者,由于网络问题,非持久类型的消费者处于非活跃状态,无法接收到生产者发送的消息。使用消息恢复策略,可以解决上面的问题。ActiveMQ目前支持一个定时或固定大小的恢复缓冲区,在你连接到broker后,在一段时间内的消息会重新发送给订阅者。ActiveMQ提供的恢复策略Fixed...
ActiveMQ之Prefect机制 简介ActiveMQ的设计目标是成为一个高性能的消息总线。这意味着使用SEDA架构可以异步执行尽可能多的工作。 为了有效利用网络资源,Broker利用“推送”模型向消费者发送消息。 这可确保消费者始终拥有准备处理的消息的本地缓冲区。 替代方案是让消费者明确地从Broker那里提取消息。 单独提取消息不是非常有效,并且会增加每个消息的延迟。但是,在不限制推送给消费者的消息数量的情况下,客户端的资...
ActiveMQ之慢消费者处理 简介慢消费者在非持久性主题上会出现问题,因为它们会强制broker为它们在内存保留旧消息。一旦填满,就会导致broker放慢生产者的速度,导致快的消费者也会变慢。目前,有一个策略可以让你配置broker除了prefect bufer之外还将为消费者保留的最大匹配的消息数。在达到此最大值后,当新消息进入时,旧消息将被丢弃。这将允许你在内存中保留当前消息并继续向慢消费者发送消息,但会丢弃旧消息。...
ActiveMQ之定期清理离线的持久订阅者 概述通常,我们不希望系统中存在长时间离线的持久订阅者,因为Broker需要为它们保留它们订阅的topic的所有消息。而且随着时间的推移,将会导致达到存储限制,从而导致系统变慢。当然,你可以通过JConsole或Web Console等管理工具来手动取消不活跃的持久订阅者。但显然可以采取更多措施来帮助管理。过期消息一些应用程序发送的消息有一定的过期时间。如果这些消息存储在Broker上供离线...
ActiveMQ目的地之目的地选项 简介目的地选项(Destination Options)是一种向JMS使用者提供扩展配置选项的方法,而无需扩展JMS API。 使用创建使用者的目标名称中的URL查询语法对选项进行编码。Consumer Options选项名默认值描述consumer.dispatchAsynctruebroker是否应该异步的向Consumer发送消息consumer.exc...
ActiveMQ的消息重发与死信处理 概述在发生以下情形时,消息会给重发给客户端:使用了一个事务性的会话且调用了rollback()方法。在调用commit()方法前一个事务性的会话被关闭了。一个会话使用CLIENT_ACKNOWLEDGE的ACK模式,且调用了Session.recover()方法。一个客户端连接超时(可能正被执行的代码执行的时间超过配置的超时时间)。客户端可以通过ActiveMQConnection...
ActiveMQ之消息选择器(Message Selectors) JMS Selectors用在获取消息的时候,可以基于消息属性和Xpath语法对消息进行过滤。JMS Selectors由SQL92语义定义。以下是个Selectors的例子: consumer = session.createConsumer(destination, "JMSType = 'car' AND weight > 2500");1:JMS Selectors表达式中,...
ActiveMQ顺序消费消息+消息分组 简介Queue中的消息是按照顺序发送给Consumers的。然而,当你有多个Consumer同时从相同的Queue提取消息时,顺序将不能得到保证。因为这些消息时被多个线程并发的处理。但是,有时候保证消息的顺序是很重要的。例如,你可能不希望插入订单操作结束之前执行更新订单的操作。那么我们可以通过Exclusive Consumer和Message Groups来实现这一目的。独有消费者从Act...
Memcached缓存介绍 Memcached简介Memcached是一个高性能的服务器内存缓存软件。在早期版本的Memcached使用的是alloc来分配内存,存在内存碎片,在新版本的Memcached采用了Slab Allocator来分配内存。在MC启动时会要求制定一块内存区域,然后会划分为多个Slab,每个Slab默认大小为1M,可以指定。每个Slab又包含多个truck,每个Slab的truck大小不同,但同一个...
maven私服(nexus)搭建 一、为何要搭建maven私服1.有的公司开发电脑没法直接连外网,下载不了依赖;可以通过私服(私服服务器可以连接),开发电脑连接私服服务器下载依赖。2.项目协作。某个项目包含多个模块,开发人员A将模块打包提交到私服,其他人从私服获取该模块的依赖。二、使用私服与不使用的区别1.不使用私服2.使用私服.三、下载和安装nexus1.从https://www.sonatype.com/d...
Chrome系浏览器显示完整地址 在浏览器输入chrome://flags/回车,找到Omnibox UI Hide Steady-State URL Scheme and Trivial Subdomains,设置为Disabled,然后重启浏览器。如果回车之后变成了搜索,则复制,然后在浏览器输入栏鼠标右键,选择粘贴并转到即可。...
解决idea卡顿问题 idea非常好用,但比较吃内存。建议内存至少8G。通过下面的设置来提升idea的速度。vm参数设置设置idea.exe.vmoptions/idea64.exe.vmoptions的vm参数-Xms2000m-Xmx2000m-Xverify:none-Xverify:none 关闭Java字节码验证,从而加快了类装入的速度,并使得在仅为验证目的而启动的过程中无需装入类,缩短了启动时...
zookeeper客户端curator使用 curator简介curator是Netflix开源的一个zookeeper客户端,在原生API接口上进行了包装,解决了很多ZooKeeper客户端非常底层的细节开发。同时内部实现了诸如Session超时重连,Watcher反复注册、分布式计数器、分布式锁等功能,实现了Fluent风格的API接口,是使用最广泛的zookeeper客户端之一。Curator使用的链式编程风格。如果只需要zooke...
zookeeper安装与配置 介绍ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现。参考:http://blog.csdn.net/u013068377/article/details/52620647http://blog.csdn.net/xuxiuning/article/details/51218941zookeeper官方文档:https://zo...