需要故意让 JMS 失败来调用错误处理程序

Posted

技术标签:

【中文标题】需要故意让 JMS 失败来调用错误处理程序【英文标题】:Need to purposely Fail JMS to invoke Error Handler 【发布时间】:2019-02-09 20:33:28 【问题描述】:

我正在尝试故意使 JMS 调用在我已经编写的方法中失败,以测试我的 JMS 错误处理程序。我尝试了几种不同的方法,例如将空值等传递给队列,但没有一个成功调用我的 JMS 错误处理程序。任何人都知道快速获取正确错误以进行测试的方法吗?谢谢。

【问题讨论】:

【参考方案1】:

“错误处理程序”我假设您的意思是 JMS ExceptionListener。如果这是真的,那么值得注意的是 ExceptionListener 仅在无法以任何其他方式传递相应 Connection 的异常时才被调用。我的建议是在测试运行时以编程方式终止代理。如果这对您来说不可行,那么您需要找到其他方式在测试期间强制断开连接。

【讨论】:

它的目标是捕获任何 JMSException,然后使用 handleError 方法覆盖正确处理错误,我只是不知道如何做一个简单的调用 mid-method 让它抛出一个JMS 异常。 handleError 方法从何而来?它不是 JMS 1.1 或 2.0 规范的一部分。根据您的问题标签,我假设它来自 Spring,但您在标题或问题本身中都没有提到这一点。我对 Spring 不是很熟悉,所以在这里很难做出假设。 哦好吧对不起,是的,就是实现ErrorHandler接口的spring错误处理器。

以上是关于需要故意让 JMS 失败来调用错误处理程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中使用 bloc 模式进行错误处理?

使用 Spring JMS 进行错误处理的最佳实践

chapter8_4 错误处理

请求接口失败怎么解决

如何处理调用 sqlplus 的批处理文件中的错误,因为 sqlplus 没有在错误或失败时设置 ERRORLEVEL?

java-异常处理2