Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WSO2交付担保模式实现:不';t尝试次数超过20次的采样处理器_Wso2 - Fatal编程技术网

WSO2交付担保模式实现:不';t尝试次数超过20次的采样处理器

WSO2交付担保模式实现:不';t尝试次数超过20次的采样处理器,wso2,Wso2,我是WSO2的新手,所以很抱歉我的错误(还有我的英语…) 我需要实现一个带有交付担保模式的代理,这里是我的解决方案(我从这篇文章开始): 代理调用外部服务,作为输入提供初始 客户端消息 如果外部服务正在运行,则所有工作正常 答复已交给客户 如果外部服务关闭或生成SOAP错误,我将 将消息放入存储(重试存储),然后使用采样 处理器(在时间“t”之后),我将再次尝试“n”最大尝试次数: 在任何尝试中,如果外部服务关闭或生成SOAP 错误,我将再次将消息放入重试存储,然后 这个过程是重复的 在“n”

我是WSO2的新手,所以很抱歉我的错误(还有我的英语…)

我需要实现一个带有交付担保模式的代理,这里是我的解决方案(我从这篇文章开始):

  • 代理调用外部服务,作为输入提供初始 客户端消息
  • 如果外部服务正在运行,则所有工作正常 答复已交给客户
  • 如果外部服务关闭或生成SOAP错误,我将 将消息放入存储(重试存储),然后使用采样 处理器(在时间“t”之后),我将再次尝试“n”最大尝试次数: 在任何尝试中,如果外部服务关闭或生成SOAP 错误,我将再次将消息放入重试存储,然后 这个过程是重复的
  • 在“n”次尝试之后,如果外部服务仍处于可用状态 服务,消息存储在另一个存储区(垃圾存储区)
当我尝试使用一条消息进行测试时,所有这些都可以正常工作,但是当我尝试使用更多消息进行测试时(>20,但此数字是可变的…),采样处理器完全挂起,日志中没有显示任何内容。查看控制台,有时(但不总是…)处理器关闭、停用,在本例中,要恢复,我需要取消部署、停止并重新启动,然后再次部署我的.car

注意:我必须使用采样处理器,而不是转发处理器,因为这个处理器在“n”尝试后会自动停止,我无法将其用于我的目标

我不能把完整的代码放在这里,因为太长了,但我可以给你一个示例.car,你可以在你的WSO2安装上部署和执行它(来模拟我使用的echo服务的外部服务…)

提前非常感谢您:感谢您的所有建议


Cesare

消息转发处理器
检索存储在消息存储中的消息,并可靠地将其转发到指定的端点。此处理器尝试一次发送一条消息,并且在收到来自目标端点的响应之前,它不会将消息从存储中出列。因此,该处理器非常适合实施订单交付场景和保证交付场景

采样处理器
检索存储在消息存储中的消息,并以指定的间隔将其注入给定序列。该处理器利用Quartz调度程序框架定期处理消息。这可用于实现消息速率限制方案


-->您可以使用转发处理器并对其进行配置,使其永远不会被停用,只需添加此参数:
-1

感谢Jean Michel的快速响应。我曾尝试使用该配置,但似乎无法正常工作。无论如何,有一个问题我想知道,在“n”次尝试后,我必须停止向我的外部服务发送消息。在任何情况下,我都会尝试再次测试转发处理器…max.delivery.attempts=-1,您的消息处理器不会停止。但是,在端点中需要类似的配置:在Avanced options->endpoint suspend state和endpoint timeout state中输入“-1”作为错误代码的值:xml配置应包含-1 1.0-1 0