`
huajz
  • 浏览: 1456 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论
阅读更多
1. 集群
集群:主要是用来错误转发和负载均衡。不过如果服务器里面有没有消费掉的消息,这时候如果服务器down了机,那没有消费掉的消息只能是等服务器好了之后才能继续被消费。
这个问题的解决方案是用master/slave的模式。(但这个性能上很大影响。Master要恢复也是要把slave停了才可以恢复的。)
集群分两种:
Failover:这种是用来解决如果一个服务器down了,马上可以切换到另一台服务器。
Network: 这种是用来解决一个服务器生产的东西,可以在另一个服务器去消费。

2. Queue顺序
Queue中的消息是按照顺序被分发到consumers的。然而,当你有多个consumers同时从相同的queue中提取消息时,你将失去这个保证。因为这些消息是被多个线程并发的处理。
所以一个queue固定一个消费者来保证顺序。

3. 监控
用的是JMX
可以通过RemoteJMXBrokerFacade来得到BrokerViewMBean:
如:
public static void main(String[] args) {
RemoteJMXBrokerFacade createConnector = new RemoteJMXBrokerFacade();

System.setProperty("webconsole.jmx.url", "service:jmx:rmi:///jndi/rmi://10.200.48.49:1099/jmxrmi");
//System.setProperty("webconsole.jmx.user","controlRole");
// System.setProperty("webconsole.jmx.password","abcd1234");
SystemPropertiesConfiguration configuration = new SystemPropertiesConfiguration();
createConnector.setConfiguration(configuration);
try {
BrokerViewMBean brokerAdmin = createConnector.getBrokerAdmin();
System.out.println(brokerAdmin.getBrokerName());

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

4. Activemq.xml简单说明。
4.1 配置连接用户名和密码:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <value>file:${activemq.base}/conf/credentials.properties</value>
        </property>     
</bean>
这个是配置用户名和密码的配置上,这里只是说明用户名和密码,没有应用,应用要这样写。
<!--在Broker中,配置插件--> 
    <plugins>   
        <simpleAuthenticationPlugin>   
            <users>   
                <authenticationUser username="${activemq.username}" password="${activemq.password}" groups="users,admins"/>   
            </users>   
        </simpleAuthenticationPlugin>   
    </plugins> 

应用用户名和密码后
Java代码
ConnectionFactory cf = new ActiveMQConnectionFactory("username", "password", "tcp://195.2.199.169:61616")  


4.2 系统持久化空间的配置
4.2.1 desitination配置:
1.memorylimit:内存限制,当消息发生累积到限制的数值时,amq会主动控制流量,停止消息的生产
2.producerFlowControl="false":关闭流量控制
建议生产环境下应该打开流量控制开关,以避免生成端占用大部分io能力,阻塞消息端的情况
<policyEntry queue=">" memoryLimit="100mb" producerFlowControl="false"/>


4.2.2存储配置:
amq可以使用文件系统或者数据库存储累积的消息,文件系统存储使用的是其自有的kaha存储系统,
数据库可以使用内嵌的Derby或者mysql,oracle

persistenceAdapter文件系统配置
1.indexBinSize:索引文件缓存页面数,缺省为1024,当amq扩充或者缩减存储时,会锁定整个
broker,导致一定时间的阻塞,所以这个值应该调整到比较大,但是代码中实现会动态伸缩,调整效果不理想
2.cleanupInterval:定时清楚存储文件,将那些完全为空的文件删除
3.maxFileLength:数据文件大小
4.forceRecoverReferenceStore和recoverReferenceStore:
缺省设置为false,amq重启时每次恢复强制从日志一条一条一次redo恢复,100W数据恢复要半个小时
        <persistenceAdapter>          
<amqPersistenceAdapter syncOnWrite="false" directory="${activemq.base}/data" maxFileLength="32 mb"  indexBinSize="8192"
cleanupInterval="30000" forceRecoverReferenceStore="false" recoverReferenceStore="false"/>
        </persistenceAdapter>



4.2.3 SystemUsage配置:
SystemUsage配置设置了一些系统内存和硬盘容量,当系统消耗超过这些容量设置时,amq会放慢生产

1.memoryUsage:amq使用内存大小,这个值应该大于所有durable desitination设置的memoryUsage之和,否则会导致硬盘swap,影响性能
2.storeUsage:kaha数据存储大小,如果设置不足,性能会下降到1个1个发的地步
3.tempUsage:非persistent的消息存储在temp区域,我们系统存储都是persistent的消息,该值可以设置小点
        <systemUsage>
           <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="512 mb"/>
                </memoryUsage>
                <storeUsage>
            <storeUsage limit="8 gb" name="foo"/>
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="100 mb"/>
                </tempUsage>
            </systemUsage>
       </systemUsage>

4.3 集群的配置
Failover: 有两种配置方式一种是静态的,把所有的ip地址都写在配置上,这种方式比较郁闷,改一台机子就要加一个ip,所以用动态的。
先加上
  <transportConnectors>
<transportConnector uri="tcp://0.0.0.0:61616" discoveryUri="multicast://default"/>
</transportConnectors>
两只集群的activemq都要加上这一段。
Java代码这样写
connectionFactory = new ActiveMQConnectionFactory(  
                "",         "",  
"discovery:(multicast://default)");
这样连接的时候就会自动可以错误转发了。
如果214机子坏了,或者重启了,连接会自动切换到49上。

Network:也是有两种配置方式:一种是静态的,所以也是介绍动态:
<networkConnectors>
<networkConnector uri="multicast://default"/>
</networkConnectors>
如果是集群的方式通常都是这两种方式结合一起用。

4.4 master/slave的配置
Master broker不需要特殊的配置。Slave broker需要进行以下配置
<broker masterConnectorURI="tcp://masterhost:62001" shutdownOnMasterFailure="false">
...
<transportConnectors>
<transportConnector uri="tcp://slavehost:61616"/>
</transportConnectors>
</broker>

4.5 jmx的配置
如果要使用jmx.activemq.xml要配置一下。
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="cmcc" useJmx="true" dataDirectory="${activemq.base}/data" destroyApplicationContextOnStop="true">
  <managementContext>
            <managementContext createConnector="true"/>
</managementContext>
要把这两个属性都设置为true.
连接的java代码如上所说。


参考文档:
ActiveMQ_in_Action.pdf
分享到:
评论

相关推荐

    ActiveMQ 简单例子源码 包含操作说明

    **ActiveMQ 简介** ActiveMQ 是一款开源的消息中间件,它是 Java Message Service (JMS) 的实现,由 Apache 软件基金会开发。它允许应用程序之间通过消息传递进行异步通信,使得系统间的耦合度降低,提高了系统的可...

    ActiveMQ问题解决记录

    这篇博客"ActiveMQ问题解决记录"可能涵盖了作者在使用ActiveMQ过程中遇到的问题以及解决这些问题的经验分享。 首先,让我们了解一下ActiveMQ的基本概念。ActiveMQ作为消息中间件,它充当应用程序之间的桥梁,负责...

    activemq-rar-5.4.1.rar

    log4j-1.2.14.jar是著名的日志记录框架,它允许ActiveMQ记录和管理各种级别的日志信息,对于调试和监控系统的运行状态非常有用。 commons-lang-2.4.jar和commons-net-2.0.jar分别提供了Java语言工具类和网络通信...

    Jmeter测试ActiveMQ性能报告

    本报告详尽地记录了整个测试过程,从测试设计、执行到结果分析,为理解ActiveMQ在JMS环境中的性能特性提供了宝贵的资料。通过这样的测试,可以为系统的优化和容量规划提供数据支持,确保在高并发场景下,ActiveMQ...

    activeMQ-activeMQ

    9. **插件系统**:ActiveMQ具有丰富的插件系统,可以扩展其功能,如添加新的协议支持、日志记录、审计等。 10. **跨语言支持**:由于支持多种协议,ActiveMQ可以被不同编程语言的应用程序所使用,如Java、Python、...

    mqttjs(activemq测试工具)

    例如,了解如何设置权限、配置网络传输、日志记录以及性能优化等。ActiveMQ支持多种持久化机制,包括KahaDB和JDBC,可以根据需求选择合适的存储方式。 总之,`mqttjs`作为ActiveMQ的测试工具,可以帮助开发者轻松...

    ActiveMq安装.docx

    在实际应用中,ActiveMQ的配置可能需要根据具体的业务需求进行调整,例如设置消息持久化、网络连接策略、安全性、日志记录等。消息中间件的核心作用在于提供异步处理、解耦系统组件、实现负载均衡和容错机制。...

    apache-activemq-5.16.6-bin.zip

    5. **日志和监控**: 提供了更好的日志记录和监控支持,帮助用户诊断问题和优化性能。 **部署与使用** 在解压"apache-activemq-5.16.6"文件后,你可以按照以下步骤部署和运行ActiveMQ: 1. **启动服务器**: 执行...

    ActiveMQ 安装 手册 说明

    【ActiveMQ 安装手册说明】ActiveMQ 是一个开源的消息代理服务器,它是Apache软件基金会的顶级项目,基于Java消息服务(JMS)标准,...在生产环境中,还应考虑配置安全策略、日志记录、监控以及备份恢复等高级功能。

    ActiveMQ插件

    - 日志插件:可以扩展ActiveMQ的日志记录功能,将日志信息发送到特定的日志系统,如Log4j或Sentry。 - 性能插件:如流量控制插件,可以限制连接速度以防止过载。 2. **客户端插件**: - 消息处理器:可以添加...

    ActiveMq总结.docx

    比如,在实现跨系统转账时,可以通过消息队列记录转账步骤,并确保所有参与方都完成了相应的操作后才更新数据库状态,从而达到最终的一致性。 ##### 2.3 广播 广播是一种消息发布机制,其中一个或多个消息生产者向...

    ActiveMQ-NetCore.zip

    描述提到,由于网上的教程和示例关于 ActiveMQ 结合 .NET Core 的信息不多,这个压缩包可能是作者为了记录自己的实践过程而创建的。这可能包含了一个简单的应用程序,演示了如何在 .NET Core 应用中连接到 ActiveMQ ...

    activemq5配置文档

    - **日志配置**:日志记录可以帮助排查问题,可以定制日志级别和输出格式。 7. **高可用与集群**: - **镜像队列**:通过镜像队列,可以确保消息在多个Broker间复制,提高可用性。 - **集群部署**:通过集群,...

    ActiveMQ.rar

    10. **插件扩展**:ActiveMQ支持通过插件进行功能扩展,如消息过滤、日志记录、消息转换等。 通过这两个文件,开发者可以部署并运行ActiveMQ服务器,研究不同版本间的差异,或者根据项目需求选择合适的版本。同时,...

    activeMQ static broker测试

    在测试过程中,可能会记录不同测试用例的执行结果,包括连接建立、消息发送和接收、故障切换等关键指标。 在实际应用中,理解并熟练掌握这些知识点对于构建稳定、高可用的ActiveMQ消息系统至关重要。测试同步确保了...

    apache-activemq win版本

    1. 日志文件位于`logs`目录,记录服务器运行状态和错误信息。 2. 可集成监控工具,如JMX Console,监控ActiveMQ的运行性能和资源消耗。 总的来说,Apache ActiveMQ在Windows环境下提供了稳定且强大的消息中间件服务...

    go语言实现使用activemq 收发消息

    在实际应用中,应根据项目需求适当地处理错误,例如记录日志或返回错误信息。 7. **创建main.go** 将以上代码片段整合到`main.go`文件中,构建一个完整的Go程序。启动该程序,你的Go应用就能连接到ActiveMQ,订阅...

    ActiveMQ 5 java 源码

    10. **日志和监控**:ActiveMQ使用了Log4j进行日志记录,并提供了监控工具,源码中可以了解如何设置和使用这些监控机制。 通过深入研究ActiveMQ 5的Java源码,开发者可以更好地理解消息中间件的工作机制,这对于...

    【BAT必备】activeMQ面试题

    - **监控与日志**: 配置监控工具和日志记录,及时发现并解决潜在问题。 - **安全策略**: 实施适当的安全措施,如认证、加密等,保护消息传输的安全性。 #### 四、ActiveMQ进阶技术 **4.1 ActiveMQ如何实现消息的...

    activeMq代码记录(jmsspring+jmstest)

    在“activeMq代码记录(jmsspring+jmstest)”中,我们将探讨如何将ActiveMQ与Spring框架整合,并通过测试来验证其工作原理。 首先,让我们深入了解JMS。Java Message Service(JMS)是Java平台上的一个标准API,...

Global site tag (gtag.js) - Google Analytics