Артемида ActiveMQ не может подключиться к Postgres - PullRequest
0 голосов
/ 24 апреля 2018

Ubuntu 16.04 Xenial Артемида ActiveMQ 2.4.0 (локальный хост) PGADMIN (Докер) + Postgres (Докер) Я могу подключиться к базе через pgadmin, но Артемида не может Я хочу подключить Артемиду к моей базе для страниц магазина, но при запуске у меня возникают проблемы:

2018-04-24 14:57:58,534 INFO  [org.apache.activemq.artemis.core.server] AMQ221000: live Message Broker is starting with configuration Broker Configuration (clustered=false,jdbcDriverClassName=org.postgresql.Driver,jdbcConnectionUrl=jdbc:postgresql://localhost:5432/postgres?user=super&password=super,messageTableName=MESSAGE_TABLE,bindingsTableName=BINDINGS_TABLE,largeMessageTableName=LARGE_MESSAGES_TABLE,pageStoreTableName=PAGES_TABLE,)
2018-04-24 14:57:58,566 ERROR [org.apache.activemq.artemis.core.server] AMQ224000: Failure in initialisation: java.lang.IllegalStateException: The maximum name size for the page store table prefix is 10 characters: THE PAGING STORE CAN'T START

Вот мой конфиг: broker.xml

      <store>
     <database-store>
        <jdbc-connection-url>jdbc:postgresql://192.168.20.173:5432/postgres?user=super&amp;password=super</jdbc-connection-url>
        <page-store-table-name>PAGES_TABLE</page-store-table-name>
        <bindings-table-name>BINDINGS_TABLE</bindings-table-name>
        <message-table-name>MESSAGE_TABLE</message-table-name>
        <large-message-table-name>LARGE_MESSAGES_TABLE</large-message-table-name>
        <jdbc-driver-class-name>org.postgresql.Driver</jdbc-driver-class-name>
     </database-store>
  </store>

По умолчанию Artemis будет хранить все страницы в локальных каталогах, а не в базе

Как это решить?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2018

Как уже упоминали другие (например, Джастин), кажется, что между кодом и комментариями к коду существует несоответствие, но, к счастью, соответствующий JIRA сообщает более подробное описание, объясняющее этот предел:

АРТЕМИДА-1084 Oracle12C имеет ограничение размера имени таблицы в 30 символов. При использовании подкачки и имени таблицы> 10 символов. Артемида будет хорошо работать, пока ее размер Page UUID не превысит 20 символов. Затем начните сбои на странице.

Таким образом, полные имена таблиц страниц задаются следующим образом:

page-store-table-name + UUID binary encoded form

И Oracle 12c допускает всего 30 символов для имени таблицы, что означает:

page-store-table-name <= 30 - UUID binary encoded form length

с двоичной кодированной формой UUID length = 16 + 4 (the '-' char) = 20 байт. То есть:

page-store-table-name <= 10 chars

Проблема, которую я вижу, заключается в том, что такой предел должен применяться не для какой-либо СУБД, а только для оракула 12c.

0 голосов
/ 24 апреля 2018

Соответствующее сообщение об ошибке описывает проблему:

The maximum name size for the page store table prefix is 10 characters

Глядя на код, «префикс таблицы хранилища страниц» здесь основан на конфигурации брокера. В вашем случае вы используете:

PAGES_TABLE

Что составляет 11 символов. Значение по умолчанию здесь:

PAGE_TABLE

Что составляет 10 символов. Если вы используете здесь значение, которое составляет 10 символов или меньше, я ожидаю, что ошибка исчезнет.

Проблема здесь в том, что некоторые СУБД (например, Oracle) могут поддерживать имена таблиц длиной до 30 символов, а page-store-table-name на самом деле является просто префиксом для таблиц, к которым к их имени добавляется дополнительный 20-символьный UUID. Следовательно, page-store-table-name должно быть не более 10 символов, чтобы учесть UUID, и при этом не превышать 30 символов.

...