gpt4 book ai didi

java - JMS 容错异步发布者

转载 作者:搜寻专家 更新时间:2023-11-01 03:29:09 27 4
gpt4 key购买 nike

在我们的架构中,即使与本地网络的连接丢失,JMS 发布者也可以继续工作(并生成新消息)。是否可以使用 JMS 使发布服务器容忍网络或代理中断:

  1. 发布调用可能不会阻止应用程序,即使代理不可用;
  2. 已发布的消息(在中断期间)必须在网络连接恢复后传送;

据我所知,这可以通过每台发布机器上的嵌入式(本地)代理来完成。如果这是唯一的方法,那么该拓扑是否存在任何不明显的问题 - 性能、维护等?本地代理是否能够容忍自身中断?

最佳答案

我没有试过这个,但看起来你可以使用本地故障转移来降低阻抗:使用 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>

关于java - JMS 容错异步发布者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5166692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com