以下代码是否被视为不良做法?你认为可以这样做吗? 目标是始终更新状态,要么成功(即调用service.invoke(id);正常返回),要么失败...
@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);
}
}
}
答案 0 :(得分:0)
这取决于您的用例,是否必须根据上一步执行步骤。无论您可能收到什么异常,使用finally都可以执行您的第二步。
我建议在try...catch
块之外进行第二步,这样只有当你有任何预期的异常并继续第二步时才会更新,否则,你的方法会抛出并退出。
答案 1 :(得分:0)
我认为你不应该使用消息监听器的实现,你应该独立于spring tech连接它们。只是以pojo为基础。将<jms:listener-container >
与<jms:listener>