目前,我们在WSO2 ESB中使用Store and Forward模式。因此,当消息进入代理时,我们使用序列将其移入存储(队列),然后使用消息处理器处理排队的消息并将其发送到REST API,即异步处理消息。然而,当REST API抛出400、404、409或422时,处理器停止(对于50x错误相同)。我们希望将这些4xx状态代码的失败消息移到一个单独的队列中,在那里可以对它们进行诊断和处理。这意味着,如果有一个坏消息,它不会停止处理其余的队列消息。我们只想对4xx故障这样做。5xx或网络问题/超时应继续停止处理器。我研究了死信通道(https://docs.wso2.com/display/integrationpatterns/Dead+Letter+Channel),但这似乎只与代理(同步请求)兼容。因此,我尝试使用一个故障序列将消息移动到另一个队列,然而,该故障序列似乎只适用于SOAP故障。是否有可能使它与REST API状态代码错误一起工作?https://docs.wso2.com/display/esb481/error+处理
我注意到可以添加状态代码,但这似乎只对减少重试尝试有用。提前道谢。
跟进
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="TestProxy"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target faultSequence="DeadLetterQueueSequence">
<inSequence>
<log level="custom" category="ERROR">
<property name="TEST" value="Proxy was hit"/>
</log>
</inSequence>
<endpoint>
<address uri="http://localhost:8080/sampleService/failEndpoint400"/>
</endpoint>
</target>
<description/>
</proxy>
第二步:添加死信序列:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="DeadLetterQueueSequence" trace="disable">
<log level="full" category="ERROR">
<property name="Test" value="DeadLetterQueueSequence was hit"></property>
</log>
</sequence>
出现第1个日志条目,但不会出现第2个日志条目(来自死信序列)。
WSO2 ESB似乎不是REST友好的,只能很好地与SOAP服务配合使用。
在您的消息处理器conf(forwardnig)中,您可以将消息从存储区直接发送到REST API,而不是直接将消息从存储区发送到ESB内部的代理服务,在它的outSequence中,您可以测试状态代码、响应内容等,并最终决定将消息移动到另一个存储区。
在此outSequence中,您可以选择使用状态代码来响应您的消息处理器:
Red Hat建议使用Azure团队提供的AMQPNetLite作为客户端,在从连接到代理时连接到JBoss AMQ。基于Net的应用程序-https://access.redhat.com/documentation/en-us/red_hat_amq/7.0/html-single/using_the_amq_.net_client/index JBoss AMQ基于Apache Artemi
我正在使用GCS web仪表板/控制台中提供的传输工具来安排从S3到GCS的备份文件副本。 在GCS传输日志中,它显示UNKNOWN:(显示241个故障中的5个)。失败列表中显示的文件没有什么不同。同样的241个文件在每次计划的传输中失败。有没有地方我可以得到一个实际的错误消息? 我已经检查过: 在这些失败之前和之后有超过150万成功复制的其他文件。这些失败不是在传输列表的开始或结束,也不是连续的
我正在使用WSO2ESB4.7.0和ActiveMQ5.8.0。我希望将消息存储在队列中,为此我尝试使用这段代码,但它不工作。我创建了存储库,这将有助于存储消息,我的conumeing过程已经在JAVA代码中完成,所以我不必担心消费,如果我这样做了,我的消息将出现在acivemq UI中。我的配置如下所示 我试图通过代理传递消息,为此我编写了简单的代理服务 在这种情况下,我的队列没有在Active
问题内容: 在简单情况下,如果3台服务器具有1个主服务器和2个从属服务器而没有分片。是否有使用Java和Jedis的经过验证的解决方案,该解决方案没有单点故障,并且将自动处理单个服务器(无论是主服务器还是从服务器)(自动故障转移)。例如,提升主机并在故障后重置,而不会丢失任何数据。 在我看来,这似乎应该是一个已解决的问题,但是我找不到关于它的任何代码,而仅是对实现此方法的高级描述。 谁实际覆盖并在
对于复制,我们设置Server1作为主服务器,设置server2作为次服务器...一切正常。 期望:当server1停机时,次要的server2不会自动变成主要的。它仍然是次要的。server2也有可能自动成为主服务器。 情况2:MongoDB复制是否需要3台强制服务器,以便当server1宕机时,server2将自动成为主要服务器,server3将保持次要服务器。(这很管用)
我有一个只有一个分区的Kafka主题。 在任何时间点,都可以有多个kafka客户端。所有客户端都使用相同的消费者组订阅。因此,在任何给定的时间点,只有1个客户端将接收消息。假设从t0到t10,consumer1正在接收消息,但一段时间后,它停止接收消息,consuper2被选为新的领导者(可能是因为consumer2中的GC暂停)。在我的consumer1中,我希望检测故障转移发生的时间,以便它可