簡體   English   中英

Apache camel from(file)不會刪除已處理的一個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM