Wildfly 消息存储在多个服务器的 JDBC 数据源中

Wildfly messaging stored in a JDBC datasource for several servers

我尝试将来自 activeMQ 消息传递的消息保存在 postgres 数据库中。第一步很容易。我添加了这个 CLI

  /subsystem=datasources/data-source=messagingDS:add(jndi-name="java:jboss/datasources/messagingDS",use-java-context=true,  \
    use-ccm=true,connection-url="{{ pg_db_connection_url_messaging }}",driver-name=postgres,transaction-isolation=TRANSACTION_READ_COMMITTED,min-pool-size=0,  \
    max-pool-size=20,user-name={{ pg_db_user_pg }},password={{ pg_db_password_pg }},blocking-timeout-wait-millis=10000,check-valid-connection-sql=select 1,validate-on-match=true, \
    valid-connection-checker-class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker",validate-on-match=true, \
    exception-sorter-class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter")
  /subsystem=datasources/data-source=messagingDS:test-connection-in-pool
  /subsystem=messaging-activemq/server=default:write-attribute(name=journal-datasource, value=messagingDS)

但我想对集群上的多个服务器使用相同的数据库模式,我在某处读到我必须使用一些后缀,但我找不到关于如何在 activeMQ 中为每个服务器配置后缀的信息,任何想法怎么做?

我认为 WildFly 不支持 JDBC table 名称的后缀或前缀,因此您需要为 journal 手动设置 table 名称] 配置。这是属性列表:

  • messages-table
  • bindings-table
  • jms-bindings-table
  • large-messages-table
  • node-manager-store-table
  • page-store-table

这些对于每台服务器都必须是唯一的。

谢谢,我想我有。这使得表是唯一的,例如,我可以将表用于四个集群,并为每个节点分配一个编号。自动化让这一切变得简单 ;)

目前尚未实现大型表的日志

/subsystem=messaging-activemq/server=default:write-attribute(name=journal-messages-table,value=MESSAGES_01)
/subsystem=messaging-activemq/server=default:write-attribute(name=journal-bindings-table,value=BINDINGS_01)
/subsystem=messaging-activemq/server=default:write-attribute(name=journal-large-messages-table,value=LARGE_MESSAGES_01)
/subsystem=messaging-activemq/server=default:write-attribute(name=journal-node-manager-store-table,value=NODE_MANAGER_STORE_01)
/subsystem=messaging-activemq/server=default:write-attribute(name=journal-page-store-table,value=PAGE_STORE_01)