我有一个由COM服务器每秒触发数千次的事件,它提供来自交换的实时价格信息。在我的代码中,我可以访问此事件(C#):
String NewInteraction1 = "//div[@ardbn='Customer']//a";
WebDriverWait wait1 = new WebDriverWait(driver, 120);// 1 minute
wait1.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(NewInteraction1)));
WebElement link1 = driver.findElement(By.xpath(NewInteraction1));
link1.click();
Thread.sleep(4000);
List<WebElement> allElements = driver.findElements(By.xpath("//table[@class='MenuTable']//tr"));
System.out.println(allElements.size());
for(WebElement element:allElements){
System.out.println(element.getText());
if(element.getText().equals("ELEMENT TO BE CLICKED"))
{
element.click();
Thread.sleep(4000);
break;
}
}
我想尽快处理传入的数据,因为我意识到当交易非常繁忙时,事件的频率甚至更高,有时Stream似乎被卡住了,然后不再触发任何事件
那么我的想法是什么?我想使用ConcurrentQueue对数据进行排队,并且并行运行几个Workerthreads,这些项目将使项目出列以处理它们。
但是现在我不知何故被卡住了,因为我无法将数据(包括最重要的值,包括SymbolNr,float Price和DateTime Time)一次排入ConcurrentQueue而不将它们包装到一个实例中(通用)类。因为这种方法在我看来非常耗时,所以我们讨论的是每秒最多可以实现100,000个对象。
我是对的吗?处理这种情况的最佳方法是什么?