消息队列
文章平均质量分 72
ONLY_MIT
这个作者很懒,什么都没留下…
展开
-
(1)Artemis简介
1.简介 Artemis是通过基于netty的非堵塞IO架构开发的,拥有出色的性能。由jboss捐献的HornetQ的衍生版本,可能作为下一代ActiveMQ的存在。 选择Artemis的原因开源、高可用性、Java编写、高性能的日志保证持久化消息像非持久化消息一样拥有出色的表现、功能齐全、简洁的设计、灵活的集群可以通过不可靠的全球网络创建地理上分布的集群。 Arte...翻译 2018-08-27 17:44:33 · 18287 阅读 · 11 评论 -
Artemis集群(18)
Artemis集群允许将Artemis服务组组合在一起,便于共享消息的负载处理。集群中每个活动节点都是一个活动的Artemis服务,它管理自己的消息并处理自己的连接。集群中的每个节点都通过broker.xml配置文件来声明与其他节点关系,从而形成集群。当一个集群节点连接到另一节点时,通过在内部创建一个core bridge来建立他们之间的连接。不需要为每个节点都声明一个明确的bridge,...翻译 2018-09-05 16:38:32 · 5146 阅读 · 5 评论 -
Artemis资源限制(17)
有时,除了与授权和身份验证相关的正常安全设置之外,对某些用户可以执行的操作设置特定限制是有非常有用的。 例如,限制用户可以创建的连接数或用户可以创建的队列数。 如下是一个简单的通过XML配置限制用户资源的配置:<resource-limit-settings> <resource-limit-setting match="myUser"> ...翻译 2018-09-05 14:47:57 · 661 阅读 · 0 评论 -
Artemis分页(16)
Artemis支持包含数百万条消息的庞大队列,但是服务器运行的内存有限。这种情况下,不可能将所有队列消息都存储在内存中,因此Artemis会在需要时将内存的消息分页到磁盘中,从而允许大量的队列占用较少的内存。当地址中所有消息占用内存大小超过配置的最大大小时,Artemis开始将消息分页到磁盘中。1.页面文件 在文件系统中消息按地址进行存储。每个地址都有一个单独的文件夹,其中消...翻译 2018-09-05 14:39:10 · 718 阅读 · 0 评论 -
Artemis大型消息(15)
Artemis支持发送和接收大消息,即使客户端和服务器在有限内存环境中运行。对可以发送或使用的消息大小的唯一实际限制是可用的磁盘空间。客户端和服务器只运行在50MiB的RAM的环境中,我们测试了发送和使用最大8 GiB大小的消息! 要发送大型消息,用户可以在消息体上设置InputStream,在发送该消息时,Artemis将读取InputStream。例如,FileInputSt...翻译 2018-09-05 12:31:46 · 1039 阅读 · 0 评论 -
Artemis逾期消息(14)
可以在发送消息时设置消息的存活时间。Artemis将不会投递超过存活时间的消息。如果消息在达到存活时间后还未被投递,服务器可以丢弃该消息。可以为Artemis分配一个逾期地址,以便在消息逾期后从队列中删除并发送到逾期地址。多个不同的队列可以绑定到同一个逾期地址,这些逾期消息可以被消费用于进一步的检测。CORE API 使用Artemis CORE API客户端可以直接在消息里...翻译 2018-09-05 10:34:58 · 1079 阅读 · 0 评论 -
Artemis消息的重新投递(13)
消息可能无法成功投递(例如,使用事务会话在进行消息消费时被回滚)。这样的消息回到其队列准备重新传递。 但是,这意味着在不会成功的情况下可以一次又一次地传递消息,从而无限期地保留在队列中,导致堵塞系统。 有两种方法可以处理这些未投递的消息:延迟重新投递:可以延迟消息的重新投递。 这使客户端有时间从任何瞬态故障中恢复,并防止其网络或CPU资源过载。 死信地址:也可以配置一个死信...翻译 2018-09-05 10:29:50 · 1212 阅读 · 0 评论 -
Artemis保证消息的发送和提交(12)
事务实现 当使用Artemis提交或回滚事务时,提交或回滚的请求将发送到服务器,并且将阻塞客户端,直到从服务器收到提交或回滚的生效响应。 当在服务器上收到提交或回滚时,它将被提交到日志,并且根据参数journal-sync-transactional的值为true,服务器将确保在发送响应到客户端之前将提交或回滚操作持久化存储。如果此参数的值为false,直到某个时间将响应发送到...翻译 2018-09-04 18:33:37 · 1226 阅读 · 0 评论 -
Artemis流量控制(11)
流控制用于限制客户端和服务器之间或服务器和另一个服务器之间的数据流,以防止客户端或服务器被数据淹没。1.消费者流量控制 当客户端在消费消息时可以控制服务器和客户端之间的数据流。出于性能原因,客户端通常在通过receive()方法传递消息给使用者之前缓冲消息,或者通过消息监听器异步地缓冲消息。 如果消费者无法像传递消息那样快速处理消息并将其存储在内部缓冲区中,那么最终可能会出现...翻译 2018-09-04 17:13:24 · 609 阅读 · 0 评论 -
Artemis资源管理配置与定时消息(10)
资源管理配置 Artemis拥有自己的资源管理器,用于处理JTA事务的生命周期。启动事务时,将通知资源管理器并保留事务及其当前状态的记录。在某些情况下,可能出现启动事务但后来被遗忘了。也许客户端异常,再也没有重连。如果发生这种情况,那么事务将无限期的等待。 Artemis为了处理这类问题,通过配置可以扫描并回滚它找到的任何旧事务。默认值为3000000毫秒(5分钟),即删除任何...翻译 2018-09-04 16:44:54 · 1263 阅读 · 0 评论 -
(9)Artemis网络孤立(脑分裂)
如果一个主或备份服务器在网络中被孤立,可能会发生故障转移,并且会照成有2个存活的服务器同时在集群中提供消息服务(主和备份服务器同时成为存活服务器),我们称这个为脑裂。如下有两种不同的配置来缓解此问题。1.仲裁选举 主和备份服务器都使用仲裁选举来决定在断开复制连接时的操作。服务器将请求集群中的每个主服务器进行投票,以确定它是否认为它复制到或者复制来源的服务器仍然存活。在这种情况...翻译 2018-08-29 17:04:52 · 602 阅读 · 0 评论 -
(8)Artemis检测(僵尸连接、慢消费者、代理异常)
僵尸连接检测 本节将讨论连接生存时间(TTL)并解释Artemis如何处理客户端崩溃和已经退出但是未完全关闭资源的客户端。没有队列的TTL(即当队列多长时间后没有被使用,如没有消费者,则队列会被删除,Artemis的TTL只有消息和连接的TTL概念)。default-purge-on-no-consumers定义也只是这个队列没有消费者后立即清除队列,无法定义队列没有消费者保留多长时间后...翻译 2018-08-29 16:39:06 · 1585 阅读 · 4 评论 -
(7)Artemis传输配置
1.接收器(Acceptor) 在Artemis传输中接收器是一个重要的概念,如下broker.xml中接收器的配置:<acceptor name="netty">tcp://localhost:61617</acceptor> 可以在acceptor元素中定义一个或多个接收器。每台服务器接收器的数量没有上限。每个接收器定义了一种可以与Ar...翻译 2018-08-28 15:58:26 · 2866 阅读 · 0 评论 -
(6)Artemis持久化策略
Artemis拥有两种持久化方案,一种是使用针对消息持久化高度优化并且拥有出色性能的日志系统;另一种是JDBC存储,使用JDBC连接到数据库。JDBC存储还在开发中,可以使用日志功能(基本上除了分页和大消息外的所有场景)。 1.日志文件 日志文件由磁盘上的一组文件组成。每个文件都是预先创建好并且固定大小并且最初是填充满的。当服务器上进行操作,如:增、删、改消息都将记入到日志,...翻译 2018-08-28 15:18:46 · 1834 阅读 · 4 评论 -
(5)Artemis支持SQL过滤
Artemis支持基于SQL 92子集语法的过滤表达式。与JMS选择器类似,但是预定义标识符不同。过滤语法使用在如下几个地方:预定义队列,在预定义队列时可以在core或者jms的broker.xml中为队列定义过滤表达式。只有与表达式匹配的消息才能进入队列。 使用可选的过滤器定义core桥接器,仅桥接匹配的消息。 使用可选的过滤器定义转移,仅转移匹配的消息。 在创建消费者、队列和在...翻译 2018-08-28 11:28:43 · 345 阅读 · 0 评论 -
(4)Artemis支持的协议
目录 1.AMQP1.1 消息转换1.2 拦截和更改消息1.3 AMQP广播地址(TOPIC)1.4 AMPQ事务消息1.5 AMQP消息投递调度2.MQTT2.1 留用(retain)消息2.2 will消息2.3 debug日志2.4 通配符(wild)订阅3.STOMP3.1 将STOMP目的地映射到地址和队列3.2 STOMP心跳...翻译 2018-08-28 11:16:15 · 2252 阅读 · 0 评论 -
(3)Artemis寻址模型
概述 Artemis使用独特、灵活的寻址模型,其包括三个主要概念:地址,队列和路由类型。 地址:地址代表了一个消息的端点,通过配置地址有全局唯一的名称,一个地址可以绑定0到多个队列,并且绑定一个路由类型。 队列:当消息匹配到对应地址,取决于配置的路由类型消息会被发往一个或者多个队列。队列可以配置为自动创建和删除。 路由类型:路由类型决定如何将消息发送到与地...翻译 2018-08-27 22:59:42 · 2079 阅读 · 0 评论 -
(2)如何使用Artemis
1 Artemis服务器发行版目录结构 |___ bin | |___ examples | |___ common | |___ features | |___ perf | |___ protocols | ...翻译 2018-08-27 18:03:29 · 6999 阅读 · 0 评论 -
Artemis高可用性和故障转移(19)
我们将高可用性定义为系统在一个或多个服务器发生故障后继续运行的能力。高可用性的一部分是故障转移,我们将其定义为客户端连接在服务器发生故障时从一台服务器迁移到另一台服务器的能力,以便客户端应用程序可以继续运行。1.实时备份群组 Artemis运行服务器作为有效备份组链接在一起,每个活动服务器可以有一个或多个备份服务器。一个备份服务器仅被一个活动服务器拥有。在发送故障转移之前,备...翻译 2018-09-05 18:11:25 · 2752 阅读 · 1 评论