Является ли фреймворк регистрации в weblogic на основе Log4j? Это означает, что вы можете использовать JMSAppender (возможно, разумно обернуть приложение Async log4j, если сможете) и обрабатывать его, как вы хотите.
Или, если вы говорите о рамках ОСБ отчетности, есть несколько вариантов:
- Настройка по умолчанию JMS reporting provider (который использует основную базу данных SOAINFRA, который, мы надеемся, настроенное быть что-то лучше, чем по умолчанию Derby), затем напишите MDB, который вытаскивает отчеты из очереди и вставляет их в SAS BigData
- Отключите JMS-провайдера и используйте custom provider, который может делать все, что вы хотите. Если вы хотите, вы все равно можете выполнить двухэтапный процесс, когда сам поставщик отчетов ставит отчеты в очередь JMS, чтобы он быстро возвращался, а другой MDB отключает сообщения и сохраняет их в своем собственном темпе.
Я не рекомендую вызывать веб-службу или базу данных без асинхронного шага посередине, потому что вам нужно, чтобы протоколирование и отчетность были очень быстрыми и использовали как можно меньше ресурсов за максимально короткий период.
Вы не хотите, чтобы ведение журнала зависало, когда вы испытываете нагрузку. Я видел, что все автобусы были сбиты из-за одной икоты, потому что база данных протоколирования понесла сбой производительности, что вызвало кучу открытых потоков, пытающихся войти в нее, что вызвало головокружение или таймауты потока, что вызвало больше ошибок при регистрации ...
Если у вас есть буфер, похожий на JMS-очередь, то вы можете обрабатывать пики, планируя заранее. Вы можете сказать: «На самом деле, я хочу, чтобы очередь JMS насчитывала 10 000 сообщений, и если это происходит по какой-либо причине, я хочу (переместить переполнение в отдельную очередь в этом другом поле) или (отфильтровать все несущественные сообщения) или (отбросьте новые сообщения) или (действие по вашему выбору). О да, и если база данных протоколирования терпит неудачу, я попробую 3 раза выполнить фиксацию, а если нет, переместите ее в эту другую очередь ». Или что угодно.
Можно ли использовать JMS и очереди, чтобы отправить данные журнала на большой сервер данных? Log4j logging просто может не сработать для нас в этом случае. Так что я либо могу использовать java callout реализовать JMS внутри java-кода, сделать его похожим на его синхронизацию. Или просто создайте собственный поставщик отчетов, который выполняет одно и то же задание (используйте JMS для отправки данных журнала на большой сервер данных) и замените поставщика отчетов по умолчанию. Будет ли это работать? Спасибо. –
Отредактировал мой главный вопрос, но короче, да. –
Большое вам спасибо за подробный ответ. –