更新时间:2022-07-06 01:54:03
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之间流转。
<broker>节点增加schedulerSupport="false"</broker>
<dispatchPolicy> <!--按顺序分发--> <strictOrderDispatchPolicy /> </dispatchPolicy>
<subscriptionRecoveryPolicy> <!--只恢复最后一个message--> <lastImageSubscriptionRecoveryPolicy /> </subscriptionRecoveryPolicy>
<networkConnectors> <networkConnector uri="static:(tcp://127.0.0.1:61617,tcp://127.0.0.1:61616)"/> </networkConnectors>
<destinationPolicy> <policyMap> <policyEntries> <policyEntry queue="test.>" enableAudit="false"> <networkBridgeFilterFactory> <conditionalNetworkBridgeFilterFactory replayWhenNoConsumers="true" /> </networkBridgeFilterFactory> <pendingMessageLimitStrategy> <constantPendingMessageLimitStrategy limit="1000"/> </pendingMessageLimitStrategy> </policyEntry> </policyEntries> </policyMap> </destinationPolicy>
<bean id="securityConstraint" class="org.eclipse.jetty.http.security.Constraint"> <property name="name" value="BASIC" /> <property name="roles" value="admin" /> <property name="authenticate" value="false" /> </bean>
failover:(tcp://primary:61616,tcp://secondary:61616)?randomize=false&jms.useAsyncSend=false&priorityBackup=true