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&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中
怎么解决呢?
正如其他人(例如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个字符的限制之下。