Добавить столбец в базу данных 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:

  1. Скопируйте класс AbstractLog как он есть из источника QuickFix / J и включите его в свой проект.
  2. Создайте класс, который расширяет класс AbstractLog, и реализуйте все абстрактные методы.
  3. Создайте переменные-члены для любого дополнительного поля, которое вы хотите добавить в журналы (например, бизнес-идентификатор), и предоставьте конструктор, который принимает аргумент и устанавливает его значение.
  4. Методы logIncoming и logOutgoing принимают параметр String. Это данные, которые вы хотите зарегистрировать. На этом этапе вы можете добавить свои собственные поля (добавленные в пункте 3) в журналы. Вы можете отформатировать журнал по своему усмотрению, и вы можете использовать любой метод вывода, например консоль, базу данных и т. Д., Поскольку вам придется реализовать его самостоятельно.

Создание LoggerFactory:

  1. Создайте LoggerFactory, который реализует интерфейс quickfix.LogFactory.

  2. В методе "create" создайте и верните экземпляр Logger, который вы создали, прежде чем использовать нужный вам конструктор.

  3. Значения, которые необходимо передать конструктору, можно сохранить как переменные-члены 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 источник:

https://github.com/quickfix-j/quickfixj

Другие вопросы по тегам