在我们的体系结构中,即使与本地网络的连接丢失,JMS发布者也可以继续工作(并生成新消息).是否可以使发布服务器容忍JMS的网络或代理中断:
>发布呼叫可能不会阻止申请,即使经纪人不可用;
>网络连接恢复后,必须发送>已发布的消息(在中断期间);
据我所知,可以在每台发布机上使用嵌入式(本地)代理完成.如果这是唯一的方法,那么该拓扑是否有任何明显的问题 – 性能,维护等?本地经纪人会自行容忍中断吗?
最佳答案 我没试过这个,但似乎你可以使用本地故障转移来减少阻抗:
使用ActiveMQ,您可以配置故障转移传输:
failover:(tcp://primary:61616,tcp://secondary:61616)?randomize=false
试着画出这个:
client +---> primary: network broker <-------+
| |
+---> secondary: embedded broker -----+
这里主要是您的网络代理,而您的辅助代理将是本地嵌入式代理,具有到主代理的桥接.这似乎在客户发布分配时会很好用;我不确定这对于订阅是否会更好,然后@Biju提出的解决方案:如下图所示:
client +---> secondary: embedded broker ------> primary: network broker
例如,这是我的嵌入式代理(通常是非持久性的).
<bean id="activeMQBroker" class="org.apache.activemq.broker.BrokerService">
<property name="transportConnectors">
<list>
<bean id="brokerConnection" class="org.apache.activemq.broker.TransportConnector">
<property name="connectUri">
<bean id="brokerURI" class="java.net.URI">
<constructor-arg value="tcp://localhost:61616" />
</bean>
</property>
</bean>
</list>
</property>
<property name="persistent" value="true" />
</bean>