[英]Apache camel from(file) doesn't delete processed one
我定義了以下簡單路線:
from("file:" + recoverableErrorsFolder +"? delete=true&consumer.initialDelay=0&consumer.delay="+redeliveryDelay) .to("bean:myBean");
我有這樣定義myBean:
public void process(Exchange exchange) throws Exception {
ReceivedPlazasInfo receiv =exchange.getIn().getBody(ReceivedPlazasInfo.class);
}
但是當我運行它時,處理過的文件永遠不會刪除。 如果我將流程功能更改為
String receiv =exchange.getIn().getBody(String.class);
它工作正常。
怎么了?
ReceivedPlazasInfo類如下所示:
@XmlRootElement( name = "plazas" )
@XmlAccessorType(XmlAccessType.FIELD)
public class ReceivedPlazasInfo {`
@XmlElement( name = "parking" )
private List<ReceivedParkingInfo> parkingResponse;
/**
* @return list of parkings
*/
public List<ReceivedParkingInfo> getParkingResponse() {
return parkingResponse;
}
/**
* @param parkingResponse : list of parkings
*/
public void setParkingResponse(ArrayList<ReceivedParkingInfo> parkingResponse) {
this.parkingResponse = parkingResponse;
}
}
@Entity
@XmlRootElement( name = "parking" )
@XmlAccessorType(XmlAccessType.FIELD)
public class ReceivedParkingInfo {`
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@XmlElement( name = "idParking" )
private String idParking;
@XmlElement( name = "idType" )
private String idType;
@XmlElement( name = "numPlazas" )
private Integer numPlazas;
@XmlElement( name = "timeStamp" )
private String timeStamp;
/**
* @return idParking
*/
public String getIdParking() {
return idParking;
}
/**
* @param idParking
*/
public void setIdParking(String idParking) {
this.idParking = idParking;
}
/**
* @return idType
*/
public String getIdType() {
return idType;
}
/**
* @param idType
*/
public void setIdType(String idType) {
this.idType = idType;
}
/**
* @return numPlazas
*/
public Integer getNumPlazas() {
return numPlazas;
}
/**
* @param numPlazas
*/
public void setNumPlazas(Integer numPlazas) {
this.numPlazas = numPlazas;
}
/**
* @return timeStamp
*/
public String getTimeStamp() {
return timeStamp;
}
/**
* @param timeStamp
*/
public void setTimeStamp(String timeStamp) {
this.timeStamp = timeStamp;
}
}
當您使用帶有JAXB批注的POJO類(例如ReceivedParkingInfo
並且希望讓Apache Camel能夠通過JAXB自動將XML轉換為該POJO或從XML轉換為該POJO時,則需要將camel-jaxb
添加到類路徑中。
這可以說明嘗試執行此文件時絕不會刪除該文件
ReceivedPlazasInfo receiv =exchange.getIn().getBody(ReceivedPlazasInfo.class);
因為類路徑上沒有camel-jaxb,所以Camel無法將文件轉換為此POJO類,而是返回null,否則將引發有關轉換的異常。
因此,您應該記住將camel-jaxb
添加到類路徑中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.