вход в ActiveMQ: когда клиентское приложение подключается к автономному брокеру - PullRequest
0 голосов
/ 03 декабря 2018

Я использую ActiveMQ 5.15.5 как автономный брокер, и мое весеннее приложение подключается к нему.Я пытаюсь отследить время жизни сообщения в журнале клиентских приложений.

То есть, в методе onMessage(Message p_message) моего приложения у меня есть различные операторы журнала, которые печатаются под идентификатором потока: "Задача сеанса ActiveMQ".Как показано ниже:

[INFO ] 2018-11-27 16:29:57,642 [ActiveMQ Session Task] HydrationServiceImpl - ===>  START: dehydrate 
[INFO ] 2018-11-27 16:29:57,642 [ActiveMQ Session Task] HydrationDaoImpl - ==> START: countCor 
[INFO ] 2018-11-27 16:29:57,649 [ActiveMQ Session Task] HydrationDaoImpl - ==> END: countCor 
[INFO ] 2018-11-27 16:29:57,649 [ActiveMQ Session Task] HydrationDaoImpl - ==> START: purge for id = 82559 
[INFO ] 2018-11-27 16:29:57,664 [ActiveMQ Session Task] HydrationDaoImpl - ==> END: purge 
[INFO ] 2018-11-27 16:29:57,664 [ActiveMQ Session Task] HydrationServiceImpl - ==> END: dehydrate 

Таким образом, если обрабатывается более 1 сообщения, все получают один и тот же идентификатор потока: - [Сеансовая задача ActiveMQ]

Таким образом, у меня нет возможностиклассифицировать журналы для различных сообщений.

Есть ли способ узнать, для какого сообщения выдается оператор журнала?

1 Ответ

0 голосов
/ 04 декабря 2018

Большинство каркасов ведения журналов реализуют нечто, называемое Mapped Diagnostic Context (далее - MDC), чтобы иметь дело с ситуациями, подобными тем, где несколько потоков работают над отдельными частями работы одновременно.Короче говоря, MDC позволяет помещать информацию об идентификаторе в стек для каждого потока, на который вы затем можете ссылаться из своей конфигурации ведения журнала.В вашей ситуации вы можете вставить идентификатор сообщения в MDC, а затем сослаться на него из конфигурации журналирования, чтобы он был напечатан во всех ваших отчетах.

Вот достойная статья об этом.

...