Как спроектировать обработку в памяти для статуса торговых ордеров в реальном времени в Java
У нас есть приложение, которое готовит торговые ордера и отправляет их брокеру (Interactive Brokers) через их API. Приложение использует MySQL в качестве хранилища данных и ActiveMQ для обработки сообщений о состоянии торговых ордеров от Interactive Brokers API.
Мы храним все данные, связанные с заказами, и отправляем в базу данных уведомления и позиции заказов и последовательности заказов, что действительно требует значительного времени из-за задержки запросов к базе данных.
У нас есть проблема с производительностью для отправки и обработки более 200 заказов, и она занимает около 3-4 минут. Мы профилировали приложение (JProfiler) и обнаружили, что вызовы из базы данных только увеличивают время выполнения заказа.
Так как это торговое приложение, 3-4 минуты - огромное время, так как торговые цены на рынке меняются очень быстро.
Пожалуйста, предоставьте некоторые фреймворки или базы данных в памяти, где мы могли бы обрабатывать все на лету и синхронизировать с реальной базой данных на более позднем этапе. (желательно MySQL как коннектор)
Кроме того, Interactive Brokers будут отправлять сообщения о состоянии заказа в виде событий обратного вызова. Пожалуйста, сообщите нам о любых средах обработки сложных событий (CEP) в Java, которые соответствуют платформам в памяти.
Приветствуется любая помощь в том, как спроектировать или реализовать такие фреймворки.
Спасибо.