提问者:小点点

Artemis ActiveMQ无法连接到Postgres


Ubuntu 16.04 Xenial Artemis ActiveMQ 2.4.0(localhost)PGADMIN(docker)postgres(docker)我可以通过pgadmin连接到基地,但artemis不能我想将Artemis连接到我的基地存储页面,但在开始时,ia有一个麻烦:

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

这是我的配置:broc. 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会将所有页面存储到本地目录,而不是在base中

怎么解决呢?


共2个答案

匿名用户

正如其他人(例如Justin)已经提到的,代码和代码注释之间似乎不对齐,但幸运的是,相关的JIRA报告了更明确的描述来解释该限制:

ARTEMIS-1084 Oracle12C的表名大小限制为30个字符。使用分页和表名时

总之,完整的页表名称由以下人员给出:

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

Oracle 12c只允许一个表名总共30个字符,这意味着:

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

使用UUID二进制编码形式长度=16 4('-'字符)=20字节。即:

page-store-table-name <= 10 chars

我看到的问题是这样的限制不应该对任何DBMS强制执行,而应该只对oracle 12c强制执行。

匿名用户

相关错误信息描述了问题:

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

查看代码,这里的“页面存储表前缀”是基于代理的配置。在你的情况下,你使用:

PAGES_TABLE

即11个字符。这里的默认值是:

PAGE_TABLE

这是10个字符。如果您在此处使用10个字符或更少的值,那么我希望错误会消失。

这里的问题是,一些RDBMS(例如Oracle)只能支持最多30个字符的表名,而page-store-table-name实际上只是表的前缀,这些表的名称后面会附加一个额外的20个字符的UUID。因此,page-store-table-name必须少于10个字符才能解释UUID,并且仍然保持在30个字符的限制之下。