我知道Camel的JMS组件,用于接收消息,使用Springs DefaultMessageListenerContainer.它可以配置为使用CLIENT_ACKNOWLEDGE模式来确认消息.我的问题是,什么时候调用message.acknowledge()方法?它是由spring的监听器容器在内部调用的吗?
或者我能以某种方式在遗嘱中承认消息吗?
我想避免因为我的应用程序在处理这些消息期间崩溃并使其成为事务性而导致消息丢失的情况对我来说有点太重了
主题中的问题:在XSD中定义嵌套在同名元素中的元素是否有效?
例如,以下代码段是否正确?
<xs:element name="TypeOfAction" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="TypeOfAction" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="code" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
如果是这样,你如何使xjc正确生成类?我得到了类似静态类的编译错误TypeOfAction(基本上我会得到两个生成相同名称的嵌套静态类).
我有以下 JAXB 注释类(用 XJC 生成)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ReplicateTransactionDataNotificationType", namespace = "http://esb.pkobp/adapter/calypso/tradekast/transaction", propOrder = {
"operationContext",
"transactionData"
})
public class ReplicateTransactionDataNotificationType
implements Serializable
{
@XmlElement(name = "OperationContext", required = true)
protected OperationContextType operationContext;
@XmlElement(name = "TransactionData")
protected TransactionDataType transactionData;
public OperationContextType getOperationContext() {
return operationContext;
}
public void setOperationContext(OperationContextType value) {
this.operationContext = value;
}
public TransactionDataType getTransactionData() {
return transactionData;
}
public void setTransactionData(TransactionDataType value) {
this.transactionData = value;
}
}
Run Code Online (Sandbox Code Playgroud)
按以下方式解组时,一切正常:
JAXBContext ctx = JAXBContext.newInstance(ReplicateTransactionDataNotificationType.class);
Unmarshaller unmarshaller = …Run Code Online (Sandbox Code Playgroud)