我正在使用spring batch和spring amqp。我正在使用
在我的春季批处理ItemWriter中生成消息public class ImportItemWriter<T> implements ItemWriter<T> {
private AmqpTemplate template;
public AmqpTemplate getTemplate() {
return template;
}
public void setTemplate(AmqpTemplate template) {
this.template = template;
}
public void write(List<? extends T> items) throws Exception {
for (T item : items) {
template.convertSendAndReceive(item.toString());
}
}
}
在消费者方面,我使用POJO来使用MessageListenerAdapter处理消息。
public class ImportMessageListener{
@Override
public String handle(String exchange) throws Exception {
throw new Exception("Command Failed.");
}
}
我想要template.convertSendAndReceive(item.toString());抛出消息处理程序抛出的同一异常,以便spring批处理可以停止批处理,将其标记为失败并记录异常?
我看过这个,但无法获得如何实现上述用例?
http://docs.spring.io/spring-amqp/docs/1.3.1.RELEASE/reference/html/amqp.html
我该怎么做?
答案 0 :(得分:1)
没有一般机制可以做到这一点,尽管我们正在考虑将来发布Spring Integration。
只要您的异常是可序列化的,您就可以将其作为结果发送并在发送系统上测试有效负载类型......
public Object handle(String foo) {
return new MySerializableException("Command failed");
}
而且,在接收方......
if (result instanceof Exception) {
throw (Exception) result;
}