1

以下代码是否被认为是一种不好的做法?你认为其他方式可以做到吗?目标是始终更新状态,无论是成功(即调用 service.invoke(id);returns normals )或失败......

@Autowired
private Service service;

public void onMessage(Message message) {

    String id = null;
    String status = "FAILED";

    try {
        id = ((TextMessage) message).getText();
        status = service.invoke(id); //can throw unchecked exception
    } catch (final JMSException e) {
        throw new RuntimeException(e);
    } finally {
        if (StringUtils.isNumeric(id)) {
        service.update(id, status);
        }
    }
}
4

2 回答 2

0

这取决于您的用例,您是否必须根据上一步执行一个步骤。无论您收到什么异常,使用 finally 都可以执行您的第二步。

我建议您将第二步放在try...catch块之外,以便您仅在遇到任何预期的异常时更新并继续您的第二步,否则您的方法将抛出并退出。

于 2013-03-11T14:21:28.243 回答
0

我认为你不应该使用消息监听器的实现,你应该独立于 spring tech 来连接它们。只是基于 pojo 。<jms:listener-container > 与_ <jms:listener>

于 2013-10-04T08:09:39.767 回答