它支持业界标准协议,这样有利于客户端的选择(从c,c++,python,.net等) 当期有2个版本的ActiveMQ ActiveMQ "Classic" ActiveMQ Artemis 因为Artemis 是下一代的ActiveMQ,所以后面介绍基于Artemis。 (addressing model) 灵活的集群用于分布式负载 基于日志的低延迟持久化 方便从ActiveMQ 5迁移 使用 下载Artemis,并解压 创建Broker Instance 执行 ${ ARTEMIS_HOME}/bin/artemis create mybroker ${ARTEMIS_HOME}下载解压的目录 mybroker名字自定义 可以看到生成了一个目录mybroker,里面有各种文件 配置) mybroker/bin/artemis run -- xml:path/to/bootstrap.xml //关闭服务 mybroker/bin/artemis stop
序 本文主要小结一下artemis的一些知识点 artemis知识点 消息模型 它实现了mqtt、aqmp、stomp协议,jms的api,还提供了rest的api;其模型跟aqmp很像,用address docker支持 提供基于centos及ubuntu的docker文件 test支持 有丰富的各种测试,比如junit(提供了专门的TestRule)、smoke、stress、timing等 小结 artemis 算是系出名门,代码里头很有企业级产品的味道,还值得深入研究研究 doc Java消息服务概要 artemis doc
序 本文主要小结一下artemis的一些知识点 th (58).jpeg artemis知识点 消息模型 它实现了mqtt、aqmp、stomp协议,jms的api,还提供了rest的api;其模型跟 docker支持 提供基于centos及ubuntu的docker文件 test支持 有丰富的各种测试,比如junit(提供了专门的TestRule)、smoke、stress、timing等 小结 artemis 算是系出名门,代码里头很有企业级产品的味道,还值得深入研究研究 doc Java消息服务概要 artemis doc
序 本文主要研究一下artemis的ResourceLimitSettings ResourceLimitSettings activemq-artemis-2.11.0/artemis-server/ src/main/java/org/apache/activemq/artemis/core/settings/impl/ResourceLimitSettings.java public class null; //...... } ResourceLimitSettings定义了maxConnections、maxQueues属性 ActiveMQServerImpl activemq-artemis -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java ActiveMQMessageBundle.BUNDLE.queueLimitReached 小结 ResourceLimitSettings定义了maxConnections、maxQueues属性;artemis
序 本文主要研究一下artemis的callFailoverTimeout establishNewConnection activemq-artemis-2.11.0/artemis-core-client -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ActiveMQClientProtocolManager.java -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/RemotingConnectionImpl.java -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/ChannelImpl.java -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java
序 本文主要研究一下artemis的connectionTtlCheckInterval connectionTtlCheckInterval activemq-artemis-2.11.0/artemis-server /src/main/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImpl.java public class ConfigurationImpl //...... } ConfigurationImpl定义了connectionTtlCheckInterval属性,默认为2000 RemotingServiceImpl activemq-artemis -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java
序 本文主要研究一下artemis的DelayedAddRedistributor exchanges-topic-fanout-direct.png addRedistributor activemq-artemis -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java public -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java public -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java protected -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java public
序 本文主要研究一下artemis的connectionTtlCheckInterval heap-blog-engineering-image2-e1551739153635.png connectionTtlCheckInterval activemq-artemis-2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImpl.java //...... } ConfigurationImpl定义了connectionTtlCheckInterval属性,默认为2000 RemotingServiceImpl activemq-artemis -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java
序 本文主要研究一下artemis的gracefulShutdownEnabled th (50).jpeg gracefulShutdownEnabled activemq-artemis-2.11.0 /artemis-server/src/main/java/org/apache/activemq/artemis/core/config/impl/ConfigurationImpl.java public -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java .await(),否则执行remotingService.getConnectionCountLatch().await(timeout) connectionCountLatch activemq-artemis -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java
序 本文主要研究一下artemis的QuorumVote QuorumVote activemq-artemis-2.11.0/artemis-server/src/main/java/org/apache /activemq/artemis/core/server/cluster/qourum/QuorumVote.java public abstract class QuorumVote<V extends */ public abstract Vote connected(); /** * called by the {@link org.apache.activemq.artemis.core.server.cluster.qourum.QuorumManager QuorumVote是个抽象类,定义了connected、notConnected、vote、getDecision、allVotesCast抽象方法 QuorumVoteServerConnect activemq-artemis -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/qourum/QuorumVoteServerConnect.java
序 本文主要研究一下artemis的ServerConnectionLifeCycleListener th (51).jpeg BaseConnectionLifeCycleListener activemq-artemis -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/spi/core/remoting/BaseConnectionLifeCycleListener.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/remoting/ServerConnectionLifeCycleListener.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/server/impl/RemotingServiceImpl.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java
序 本文主要研究一下artemis的BaseInterceptor th (49).jpeg BaseInterceptor activemq-artemis-master/artemis-core-client /src/main/java/org/apache/activemq/artemis/api/core/BaseInterceptor.java public interface BaseInterceptor BaseInterceptor定义了intercept方法,该方法返回true表示可以继续下一个interceptor,返回false表示终止packet的处理 AbstractProtocolManager activemq-artemis-master /artemis-server/src/main/java/org/apache/activemq/artemis/spi/core/protocol/AbstractProtocolManager.java
序 本文主要研究一下artemis的HAManager HAManager activemq-artemis-2.11.0/artemis-server/src/main/java/org/apache -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/StandaloneHAManager.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/ColocatedHAManager.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/BackupPolicy.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/ha/ReplicaPolicy.java
序 本文主要研究一下artemis的FederatedQueue FederatedQueue activemq-artemis-2.11.0/artemis-server/src/main/java/ -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/federation/FederatedAbstract.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/federation/FederatedQueueConsumerImpl.java -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientConsumerImpl.java
序 本文主要研究一下artemis的scheduledDeliveryTime HDR_SCHEDULED_DELIVERY_TIME activemq-artemis-2.11.0/artemis-core-client -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java public -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java public -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/QueueImpl.java public
序 本文主要研究一下artemis的DiscoveryGroup DiscoveryGroup activemq-artemis-2.11.0/artemis-core-client/src/main/ java/org/apache/activemq/artemis/core/cluster/DiscoveryGroup.java public final class DiscoveryGroup implements -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/cluster/DiscoveryGroup.java -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/JGroupsBroadcastEndpoint.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/impl/BroadcastGroupImpl.java
序 本文主要研究一下artemis的confirmationWindowEnabled confirmationWindowEnabled activemq-artemis-2.11.0/artemis-core-client -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientProducerImpl.java -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ClientSessionImpl.java -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/protocol/core/impl/wireformat
序 本文主要研究一下artemis的lastValueProperty Image%202018-09-13%20at%2012.22.09%20PM.png CoreMessage activemq-artemis -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/message/impl/CoreMessage.java -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/MessageReferenceImpl.java message获取queue.getLastValueKey()的属性值,如果为null再读取message.getLastValueProperty() LastValueQueue activemq-artemis -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/LastValueQueue.java
序 本文主要研究一下artemis的SharedNothingBackupQuorum SharedNothingBackupQuorum activemq-artemis-2.11.0/artemis-server /src/main/java/org/apache/activemq/artemis/core/server/cluster/qourum/SharedNothingBackupQuorum.java true则立刻返回,否则执行voteGuard.wait(voteRetryWait),进行重试,重试voteRetries次 SharedNothingBackupActivation activemq-artemis -2.11.0/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/SharedNothingBackupActivation.java
序 本文主要研究一下artemis的ConnectionLoadBalancingPolicy th (3).jpeg ServerLocatorImpl.selectConnector activemq-artemis -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/core/client/impl/ServerLocatorImpl.java -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/loadbalance/ConnectionLoadBalancingPolicy.java -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/loadbalance/FirstElementConnectionLoadBalancingPolicy.java -2.11.0/artemis-core-client/src/main/java/org/apache/activemq/artemis/api/core/client/loadbalance/RandomConnectionLoadBalancingPolicy.java