Как мы можем сохранить Java Message Queues для справки? - PullRequest
0 голосов
/ 23 мая 2010

Как мы можем отслеживать каждое сообщение, попадающее в нашу очередь сообщений Java? Нам нужно сохранить сообщение для дальнейшего использования. Мы уже зарегистрировали его в журнале приложений (log4j), но нам нужно запросить их позже.

Ответы [ 5 ]

2 голосов
/ 23 мая 2010

Вы можете хранить их

  • в памяти - в коллекции или в базе данных в памяти
  • в автономной базе данных
1 голос
/ 23 мая 2010

Я реализовывал такое решение в прошлом, мы решили хранить сообщения со всеми их характеристиками в базе данных и разработали приложение для поиска, воспроизведения и отмены поверх него. Это шаблон Message Store :

альтернативный текст http://www.eaipatterns.com/img/MessageStore.gif

Мы также использовали это приложение для канала Dead Letter .

альтернативный текст http://www.eaipatterns.com/img/DeadLetterChannelSolution.gif

Если вы не хотите создавать собственное решение, взгляните на ReplayService для JMS от CodeStreet.

1 голос
/ 23 мая 2010

Можно создать таблицу регистрации базы данных для сообщений, сохранив сообщение как есть в столбце BLOB, отметку времени его создания / публикации в MQ и простой счетчик в качестве первичного ключа. Вы также можете добавить такие поля, как тип сообщения и т. Д., Если хотите создавать статистические отчеты по отправленным сообщениям.

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

0 голосов
/ 27 мая 2010

Лучший способ сделать это - использовать любое средство трассировки, которое предлагает ваш поставщик промежуточного программного обеспечения.Или, возможно, вы могли бы настроить промежуточного слушателя, единственной задачей которого было регистрировать сообщения и пересылать их в существующее приложение.

В большинстве случаев вы обнаружите, что поставщик промежуточного программного обеспечения уже имеет возможность сделать это длявы без изменений или осведомленности по вашему заявлению.

0 голосов
/ 23 мая 2010

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

Некоторые провайдеры JMS обслуживают тему от темы кОпределения моста очереди, потребители затем получают из своих собственных выделенных очередей, и им не нужно читать прошлые сообщения, оставленные в очереди из-за неактивности других потребителей.

В качестве альтернативы, вы можете написать log4jappender, который записывает ваши зарегистрированные сообщения в базу данных.

...