Добавить столбец в базу данных QuickFix/J Logs (Custom QuickFix/J Logger)
QuickFix/J предоставляет функциональность для хранения своих журналов в базе данных.
Можно ли добавить другой столбец (бизнес-идентификатор) к одной из его таблиц таким образом, чтобы это не вызывало проблем во внутренней регистрации сообщений QuickFix/J?
Если это возможно, пожалуйста, укажите процедуру, чтобы сделать это тоже.
1 ответ
Решение состоит в том, чтобы создать свой собственный Logger и LoggerFactory, аналогичные тем, которые предоставляются QuickFix/J.
Вы можете создать Logger, реализовав интерфейс "quickfix.Log", и LoggerFactory, реализовав интерфейс "quickfix.LogFactory".
Самый простой подход - использовать закрытый AbstractLog от QuickFix/J.
Создание класса Log:
- Скопируйте класс AbstractLog как он есть из источника QuickFix / J и включите его в свой проект.
- Создайте класс, который расширяет класс AbstractLog, и реализуйте все абстрактные методы.
- Создайте переменные-члены для любого дополнительного поля, которое вы хотите добавить в журналы (например, бизнес-идентификатор), и предоставьте конструктор, который принимает аргумент и устанавливает его значение.
- Методы logIncoming и logOutgoing принимают параметр String. Это данные, которые вы хотите зарегистрировать. На этом этапе вы можете добавить свои собственные поля (добавленные в пункте 3) в журналы. Вы можете отформатировать журнал по своему усмотрению, и вы можете использовать любой метод вывода, например консоль, базу данных и т. Д., Поскольку вам придется реализовать его самостоятельно.
Создание LoggerFactory:
Создайте LoggerFactory, который реализует интерфейс quickfix.LogFactory.
В методе "create" создайте и верните экземпляр Logger, который вы создали, прежде чем использовать нужный вам конструктор.
Значения, которые необходимо передать конструктору, можно сохранить как переменные-члены LoggerFactory и установить в конструкторе LoggerFactory.
Теперь у вас есть собственный регистратор, и вы можете использовать его, так как используются собственные регистраторы QuickFix / J, и QuickFix / J автоматически регистрируется с помощью вашего регистратора.
ApplicationAdapter application = new FixInitiator();
SessionSettings settings = new SessionSettings("./config/initiator.cfg");
CustomLogFactory customLogFactory = new CustomLogFactory(settings, myCustomID);
DefaultMessageFactory messageFactory = new DefaultMessageFactory();
FileStoreFactory fileStoreFactory = new FileStoreFactory(settings);
socketInitiator = new SocketInitiator(application, fileStoreFactory, settings, customLogFactory, messageFactory);
socketInitiator.start();
Хорошей идеей будет взглянуть на собственные реализации Logger и LoggerFactory в QuickFix/J. например, Logger, который входит в консоль: ScreenLog, ScreenLogFactory
QuickFix / J источник: