ActiveMQ SERVER 配置

ActiveMQ SERVER 配置

1.1 设置Broker名字

<broker xmlns="
http://activemq.apache.org/schema/core
" brokerName="stu_activemq5.9" dataDirectory="${activemq.data}">

</broker>

1.2 ActiveMQ admin用户名及密码设置
ActiveMQ默认使用的是jetty服务器
打开:
activemq-5.9.0\conf\jetty-realm.properties
用户名:密码,角色名
admin: admin, admin
user: user, user

1.3 设置persistenceAdapter 持久化方式
       

<persistenceAdapter>

            <!--kahaDB directory="${activemq.data}/kahadb"/-->

     <jdbcPersistenceAdapter dataSource="#oracle-ds" directory="${activemq.data}/oraclePersistence" createTablesOnStartup="false" />

 </persistenceAdapter>


在broker外添加
 

<bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

  <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>

  <property name="url" value="jdbc:oracle:thin:@192.168.30.21:1521:dbName"/>

  <property name="username" value="username"/>

  <property name="password" value="password"/>

  <property name="maxActive" value="200"/>

  <property name="poolPreparedStatements" value="true"/>

 </bean>

1.4 设置networkConnectors 连接其他的broker
       

<!-- defined network Adapter connection other broker -->

        <networkConnectors>

  <networkConnector uri="static:(tcp://remotehost:61616)" />

        </networkConnectors>

     客户端配置
         默认配置,使用随机选择Broker算法
  failover:(tcp://localhost:61616,tcp://remotehost:61616)
    关闭随机选择,优先选择第一个配置的Broker,只有之前的Broker不可用,再选择后面Broker:
   failover:(tcp://localhost:61616,tcp://remotehost:61616)?randomize=false"

<networkConnectors>

            <networkConnector name="default-nc" uri="multicast://default"/> 

        </networkConnectors>

        <transportConnectors> 

            <transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default"/>

        </transportConnectors>

        在networkConnectors节点中配置multicast协议,用于寻找其他支持multicast的服务器。在transportConnector节点配置discoveryUri,声明服务器本身支持multicast协议。
        广播自动发现服务器,适合于经常动态增减服务器的情况。优点是增减服务器,不需要为每个其他服务器节点修改配置。缺点是服务自动发现,缺少配置文件,对调试有影响。

      另外需要注意的是,由于广播功能,经常产生大量的消息传输,所以很多情况下运维是关掉这个服务的。使用Multicast Connector前要确保这个服务是开启的。
        客户端的Discover Protocol:和Failover Protocol差不多,只不过是动态发现服务。

        配置如下:
        discovery:(multicast://default)
        这样客户端会自动连接广播的url在multicast://default的服务器。

1.5 设置 transportConnectors 支持的协议
       

<transportConnectors>

            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->

            <transportConnector name="openwire" uri="tcp://localhost:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

            <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>

        </transportConnectors>

1.6 设置destinationPolicy分发策略

<!--这里使用了wildcards,表示所有以EUCITA开头的topic--> 

<policyEntry topic="EUCITA.>"producerFlowControl="false"memoryLimit="10mb"> 

<!--分发策略--> 

<dispatchPolicy> 

<!--按顺序分发--> 

<strictOrderDispatchPolicy/> 

</dispatchPolicy> 

<!--恢复策略--> 

<subscriptionRecoveryPolicy> 

<!--只恢复最后一个message--> 

<lastImageSubscriptionRecoveryPolicy/> 

</subscriptionRecoveryPolicy> 

</policyEntry>

DispathPolicy
ActiveMQ支持3中不同的分发策略
<roundRobinDispatchPolicy>:Simple dispatch policy that sends a message to every subscription that matches the message.
<simpleDispatchPolicy>:Simple dispatch policy that sends a message to every subscription that matches the message.
<strictOrderDispatchPolicy>:Dispatch policy that causes every subscription to see messages in the same order.

SubscriptionRecoveryPolicy

ActiveMQ支持6种恢复策略,可以自行选择使用不同的策略
<fixedCountSubscriptionRecoveryPolicy>: keep a fixed count of last messages.
<fixedSizedSubscriptionRecoveryPolicy>: keep a fixed amount of memory available in RAM for message history which is evicted in time order.
<lastImageSubscriptionRecoveryPolicy>:only keep the last message.
<noSubscriptionRecoveryPolicy>:disable recovery of messages.
<queryBasedSubscriptionRecoveryPolicy>:perform a user specific query mechanism to load any messages they may have missed.
<timedSubscriptionRecoveryPolicy>:keep a timed buffer of messages around in memory and use that to recover new subscriptions.


1.7 ActiveMQ启动时报锁定数据库的问题解决 
activemq database lock driver override not found

原因是:activeMQ的broker在启动时会锁定数据库。我们每个人在调试时,自己的运行环境中就会运行一个broker,所以会出现争用锁的现象(如果只有一个人运行则不会出现这样的问题),报错如下:
2012-06-27 15:12:32 org.apache.activemq.store.jdbc.JDBCPersistenceAdapter INFO D
 atabase lock driver override not found for : [mysql-ab_jdbc_driver].  Will use d
 efault implementation.
 2012-06-27 15:12:32 org.apache.activemq.store.jdbc.DefaultDatabaseLocker INFO At
 tempting to acquire the exclusive lock to become the Master broker
 2012-06-27 15:13:23 org.apache.activemq.store.jdbc.DefaultDatabaseLocker INFO Fa
 iled to acquire lock.  Sleeping for 1000 milli(s) before trying again...

处理办法:在config的activemq.xml中,修改jdbcPersistenceAdapter选项,添加一个:useDatabaseLock="false",结果如下:
<jdbcPersistenceAdapter dataSource="#dataSource" useDatabaseLock="false"/> 

参考资料:

AMQ 简介与配置
http://www.cnblogs.com/kgdxpr/p/3381974.html

ActiveMQ持久化方式
http://www.open-open.com/lib/view/open1371822097588.html

AMQ Network connectors
http://blog.csdn.net/xiajun07061225/article/details/47068451

AMQ 多服务器通信*
http://m.oschina.net/blog/286454

分发策略
http://www.data321.com/fbc03758.html
http://www.tuicool.com/articles/fy6Nviz

协议
http://blog.sina.com.cn/s/blog_616e189f0100nuyn.html

MQTT CLIENT详解
http://blog.itpub.net/28624388/viewspace-1177012/

 

转载于:https://my.oschina.net/okqq/blog/617794

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值