我正在尝试优化我的应用程序以使其以最快的速度执行。我打算让两个线程分别执行一批添加销售收据的批处理请求。我还打算有两个并行线程,每个线程都有一批客户添加请求。我想知道这是否可行,或者该API是否会锁定QuickBooks中的销售收据/客户表,从而仅允许一个线程执行。
根据我的研究,我知道存在三种类型的实体(名称列表,交易实体和支持实体)。那么,这些实体上的锁定的原因是什么,即哪种情况会导致锁定?我似乎找不到任何有关此问题的文档吗?
谢谢
锁适用于名称实体(供应商,客户和雇员)。创建新名称实体时,服务确保将唯一名称插入云中。因此,它对这3个实体的所有名称都设置了锁定。
您可以使用适当的负载来尝试这种情况。
public static void main(String args[]) {
PropertyConfigurator
.configure("log4j.properties");
Config.setProperty(Config.SERIALIZATION_REQUEST_FORMAT, "xml");
Config.setProperty(Config.SERIALIZATION_RESPONSE_FORMAT, "xml");
final Context platformContext = getPlatformContext("QBO");
final QBOV3ProdTest qbov3ProdTest = new QBOV3ProdTest(platformContext);
Thread customerThread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 15; i++) {
qbov3ProdTest.addCustomer();
}
}
});
customerThread.start();
Thread vendorThread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 15; i++) {
qbov3ProdTest.addVendor();
}
}
});
vendorThread.start();
}
private void addCustomer() {
Customer customer = new Customer();
customer.setDisplayName("TestCustomer-" + staticCount++);
try {
this.service.add(customer);
} catch (FMSException e) {
e.printStackTrace();
}
}
private void addVendor() {
Vendor vendor = new Vendor();
vendor.setDisplayName("TestVendor-" + staticCount++);
try {
this.service.add(vendor);
} catch (FMSException e) {
e.printStackTrace();
}
}
服务未返回正确的响应。无论何时失败,服务都会返回401。请在测试QBO帐户中尝试该用例时,是否可以重现此行为。
谢谢
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句