一、高可用Failover配置
failover:(uri,...,urlN)?transportOptions负载均衡,默认使用随机的uri进行连接,可以在多个broker中达到负载均衡的效果,有两种方式:
failover:(tcp://primary:61616,tcp://secondary:61616)?randomize=false
默认优先使用primary,只有当primary机器掉线之后,会自动转移到secondary,但是当primary又重新恢复之后,不会自动切换会primary。failover:(tcp://primary:61616,tcp://secondary:61616)?randomize=false&priorityBackup=true
默认优先使用primary,只有当primary机器掉线之后,会自动转移到secondary,但是当primary又重新恢复之后,又会自动切换回primary。
以上两种方式都会存在一个问题,就是当切换到备用机之后,主机器还可能遗留一些未处理的数据,为了解决这个问题,可以在集群之间搭建一个network,这样子数据可以在多个broker之间流转。
二、消息策略配置
- 禁掉scheduler功能
<broker>节点增加schedulerSupport="false"</broker>
- 配置按照顺序分发策略
<dispatchPolicy><!--按顺序分发--><strictOrderDispatchPolicy/></dispatchPolicy>
- 配置恢复策略
<subscriptionRecoveryPolicy><!--只恢复最后一个message--><lastImageSubscriptionRecoveryPolicy/></subscriptionRecoveryPolicy>
- 配置networkConnector
<networkConnectors><networkConnectoruri="static:(tcp://127.0.0.1:61617,tcp://127.0.0.1:61616)"/></networkConnectors>
- 配置消息回流到broker
<destinationPolicy><policyMap><policyEntries><policyEntryqueue="test.>"enableAudit="false"><networkBridgeFilterFactory><conditionalNetworkBridgeFilterFactoryreplayWhenNoConsumers="true"/></networkBridgeFilterFactory><pendingMessageLimitStrategy><constantPendingMessageLimitStrategylimit="1000"/></pendingMessageLimitStrategy></policyEntry></policyEntries></policyMap></destinationPolicy>
三、权限配置
- 配置用户名密码
<beanid="securityConstraint"class="org.eclipse.jetty.http.security.Constraint"><propertyname="name"value="BASIC"/><propertyname="roles"value="admin"/><propertyname="authenticate"value="false"/></bean>
四、发送方式配置
- 同步发送
failover:(tcp://primary:61616,tcp://secondary:61616)?randomize=false&jms.useAsyncSend=false&priorityBackup=true
- 异步发送
failover:(tcp://primary:61616,tcp://secondary:61616)?randomize=false&jms.useAsyncSend=true&priorityBackup=true