По-умолчанию, OpenMQ записывает данные в файлы. Это не всегда хорошо, я столкнулся с тем, что при вырубании Глассфиша по kill -9 PID файловое хранилище OpenMQ портится и с восстановлением сообщений в очередях и топиках возникают проблемы. Поэтому имеет смысл рассмотреть переход на хранение сообщений в СУБД. Мы рассмотрим MySQL.
Пусть директория, в которую установлен Глассфиш обозначается как GLASSFISH_HOME. Тогда нужно отредактировать файл с настройками OpenMQ: GLASSFISH_HOME/glassfish/domains/domain1/imq/instances/imqbroker/props/config.properties. Добавим в него следующие строки:
imq.brokerid=imqbroker imq.persist.store=jdbc imq.persist.jdbc.dbVendor=mysql imq.persist.jdbc.mysql.property.url=jdbc:mysql://localhost:3306/mqdb imq.persist.jdbc.mysql.createdburl=jdbc:mysql://localhost:3306/mqdb imq.persist.jdbc.mysql.needpassword=true imq.persist.jdbc.mysql.user=USERNAME imq.persist.jdbc.mysql.password=PASSWORD
Таким образом, мы настроили сохранение JMS-данных в БД. Нужно еще положить JAR-файл с драйвером БД (mysql-connector-java-5.1.17-bin.jar) в каталог GLASSFISH_HOME/mq/lib/ext.
Теперь создадим БД. Для этого воспользуемся утилитой imqdbmgr, которая находится в каталоге GLASSFISH_HOME/mq/bin. Пишем команду:
./imqdbmgr create all -b imqbroker
и получаем следующие таблицы в БД:
MQBKR41Simqbroker MQCON41Simqbroker MQCONSTATE41Simqbroker MQCREC41Simqbroker MQDST41Simqbroker MQJMSBG41Simqbroker MQMSG41Simqbroker MQPROP41Simqbroker MQSES41Simqbroker MQTMLRJMSBG41Simqbroker MQTXN41Simqbroker MQVER41SimqbrokerТеперь можно запускать сам Глассфиш - сохранение JMS-данных пойдет в БД, а не в файлы.
Когда создавалась БД, я столкнулся с одной проблемой. Дело в том, что у меня в MySQL кодировкой по умолчанию является UTF-8. Это проблема для OpenMQ, т.к. при создании таблицы MQTMLRJMSBG41Simqbroker появляются ошибки. Но эта проблема решается очень просто - для этого для данной Бд нужно объявить кодировку latin1:
ALTER DATABASE mqdb DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci;
Тогда все пройдет без ошибок.
Полезные ссылки:
OpenMQ, the Open source Message Queuing, for beginners and professionals (OpenMQ from A to Z)
Комментариев нет:
Отправить комментарий