产品做网站推广,建立互联网公司网站,广州通和通信建设有限公司网站,高端网站设计找哪个公司activemq网络桥接在前面的第4部分中#xff0c;我们已经看到了如何使用网络连接器在队列中平衡远程使用者的负载。 在第5部分中#xff0c;如果主题上同时存在多个远程持久订阅者#xff0c;我们将看到相同的配置如何工作。 考虑以下配置…。 图1#xff1a;经纪人网络–… activemq网络桥接 在前面的第4部分中我们已经看到了如何使用网络连接器在队列中平衡远程使用者的负载。 在第5部分中如果主题上同时存在多个远程持久订阅者我们将看到相同的配置如何工作。 考虑以下配置…。 图1经纪人网络–主题上的负载平衡订户 如上所示我们有Broker-1它启动了到Broker-2和Broker-3的两个网络连接器。 生产者将消息发送到Broker-1上的主题“ moo.bar”而Broker-2具有订户C1而Broker-3具有两个订户C2和C3主题相同。 您可能会注意到此设置与第4部分非常相似。 唯一的区别是这里我们处理主题而在第4部分中 我们处理队列。 让我们看看这个动作 在Broker-1的activemq.xml配置文件中添加以下网络连接器配置 networkConnectors
networkConnector
nameT:broker1-broker2
uristatic:(tcp://localhost:61626)
duplexfalse
decreaseNetworkConsumerPriorityfalse
networkTTL2
conduitSubscriptionsfalse
dynamicOnlytrue
excludedDestinations
queue physicalName /
/excludedDestinations
/networkConnector
networkConnector
nameT:broker1-broker3
uristatic:(tcp://localhost:61636)
duplexfalse
decreaseNetworkConsumerPriorityfalse
networkTTL2
conduitSubscriptionsfalse
dynamicOnlytrue
excludedDestinations
queue physicalName /
/excludedDestinations
/networkConnector
/networkConnectors 让我们按此顺序启动broker-2broker-3和broker-1。 akuntamukkalalocalhost~/apache-activemq-5.8.0/cluster/broker-2/bin$ ./broker-2 consoleakuntamukkalalocalhost~/apache-activemq-5.8.0/cluster/broker-3/bin$ ./broker-3 consoleakuntamukkalalocalhost~/apache-activemq-5.8.0/cluster/broker-1/bin$ ./broker-1 console Broker-1的管理控制台连接表明已经按照从Broker-1到Broker-2和Broker-3的配置分别建立了两个网络连接器 Broker-1的连接 http// localhost8161 / admin / connections.jsp 让我们开始在Broker-2上订阅订户C1订阅主题“ moo.bar”的消息在Broker-3上订阅订户C2和C3订阅主题相同的消息“ moo.bar”。 持久订阅者需要客户端ID和订阅者名称的唯一组合。 为了创建持久订户C2和C3我们需要增强/Users/akuntamukkala/apache-activemq-5.8.0/example/src/ConsumerTool.java中提供的功能其中/Users/akuntamukkala/apache-activemq-5.8 .0是ActiveMQ的安装目录。 修改后的代码包括编辑build.xml和ConsumerTool.java以添加新参数“ subscriberName”。 可以分别从此处和此处获得已编辑的文件build.xml和ConsumerTool.java。 现在开始订户。 akuntamukkalalocalhost~/apache-activemq-5.8.0/example$ant consumer -Durltcp://localhost:61626 -Dtopictrue -Dsubjectmoo.bar -DclientIdC1 -Ddurabletrue -DsubscriberNamemb.C1 akuntamukkalalocalhost~/apache-activemq-5.8.0/example$ant consumer -Durltcp://localhost:61636 -Dtopictrue -Dsubjectmoo.bar -DclientIdC2 -Ddurabletrue -DsubscriberNamemb.C2 akuntamukkalalocalhost~/apache-activemq-5.8.0/example$ant consumer -Durltcp://localhost:61636 -Dtopictrue -Dsubjectmoo.bar -DclientIdC3 -Ddurabletrue -DsubscriberNamemb.C3 Broker-2上的持久订阅者 http// localhost9161 / admin / subscribers.jsp Broker-3上的持久订阅者 http// localhost10161 / admin / subscribers.jsp Broker-1上的持久订户由于网络连接器 http// localhost8161 / admin / subscribers.jsp 现在让我们向Broker-1上的主题moo.bar发送10条持久消息。 akuntamukkalalocalhost~/apache-activemq-5.8.0/example$ant producer -Durltcp://localhost:61616 -Dtopictrue -Dsubjectmoo.bar -Dmax10 -Ddurabletrue 请参阅Broker-3上的控制台 Broker-3上的日志文件输出 如您所见Broker-3收到两次相同的消息每个订阅C2和C3一次。 默认情况下ActiveMQ不允许处理重复的消息。 发生这种情况是因为Broker-3上的订阅mb.C2和mb.C3都传播到了Broker-1。 因此当10条消息发布到Broker-1上的moo.bar时这些消息将发送到同一代理Broker-3上的订户mb.C2和mb.C3。 由于消息具有相同的ID因此重复消息将被丢弃因此警告将显示在日志消息中……如步骤19所示。 这是显示关于Broker-1的统计信息的控制台 http// localhost8161 / admin / subscribers.jsp 这是显示关于Broker-3的统计信息的控制台 http// localhost10161 / admin / subscribers.jsp 如您所见即使入队计数器显示为20出队计数器也仅显示10因为其他10条消息已由Broker-3丢弃。 这是一项有用的功能有助于确保代理最多处理一次消息。 发生这种情况的原因是预订C2和C3都传播到上游代理Broker-1。 Broker-3上的重复消息 让我们在网络连接器设置中进行一些细微调整来重试相同的场景方法是将pipelineSubscriptions “ true” 在两个网络连接器上分别从Broker-1到Broker-2和Broker-3。 重新启动代理后删除不活动的持久订阅者然后重复上述步骤。 networkConnectors
networkConnector
nameT:broker1-broker2
uristatic:(tcp://localhost:61626)
duplexfalse
decreaseNetworkConsumerPriorityfalse
networkTTL2
conduitSubscriptionstrue
dynamicOnlytrue
excludedDestinations
queue physicalName /
/excludedDestinations
/networkConnector
networkConnector
nameT:broker1-broker3
uristatic:(tcp://localhost:61636)
duplexfalse
decreaseNetworkConsumerPriorityfalse
networkTTL2
conduitSubscriptionstrue
dynamicOnlytrue
excludedDestinations
queue physicalName /
/excludedDestinations
/networkConnector
/networkConnectors 下面的屏幕快照显示Broker-1现在仅看到两个持久订阅者每个Broker-1和Broker-3来自一个代理。 当conductorSubscriptions “ true”时Broker-1中的持久订户 在Broker-1上发布10条持久消息后我们发现这次没有相同的重复消息问题。 正如预期的那样所有10条消息均由C1C2和C3处理如下面的屏幕快照所示。 Broker-1的持久主题订阅者 Broker-3的持久主题订户C2和C3分别接收和处理10条消息 因此我们已经看到了pipelineSubscriptions属性如何通过避免在代理网络中重复消息来帮助减少消息流量。 在第6部分中我们将看到ActiveMQ如何提供“消息重播”功能以防止消息阻塞的情况。 翻译自: https://www.javacodegeeks.com/2014/06/activemq-network-of-brokers-explained-part-5.htmlactivemq网络桥接