【问题标题】:How to use SQL Server 2008 R2 as persistent storage for ActiveMQ 5.9如何使用 SQL Server 2008 R2 作为 ActiveMQ 5.9 的持久存储
【发布时间】:2014-02-11 21:10:37
【问题描述】:

我的 IT 基础架构需要基于 SQL Server 2008 R2 数据库的持久性。

我正在尝试在 Windows 上为 ActiveMQ 5.9 配置 SQL Server 持久性,但无法确定带有或不带有日志的正确配置架构。

默认配置使用kahadb,并且可以正常工作:

<persistenceAdapter>
    <kahaDB directory="${activemq.data}/kahadb" />
</persistenceAdapter>

我正在使用此文档作为配置 SQL Server 持久性的参考: http://activemq.apache.org/sqlserver.html

<persistenceAdapter>
  <journaledJDBC journalLogFiles="5" dataDirectory="../activemq-data" dataSource="#mssql-ds">
    <adapter><imageBasedJDBCAdaptor/></adapter>
  </journaledJDBC>
</persistenceAdapter>

<bean id="mssql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
  <property name="url" value="jdbc:sqlserver://HOST:PORT;databaseName=DBNAME;user=USER;password=PASSWORD"/>
  <property name="username" value="USER"/>
  <property name="password" value="PASSWORD"/>
</bean>

这是我得到的 xml 解析器中的错误:

错误 |加载失败:类路径资源 [activemq.xml],原因:来自类路径资源 [activemq.xml] 的 XML 文档中的第 88 行无效;嵌套异常是 org.xml.sax.SAXParseException;行号:88;列号:95; cvc-complex-type.2.4.a:发现以元素“journaledJDBC”开头的无效内容。 '{"http://activemq.apache.org/schema/core":jdbcPersistenceAdapter、"http://activemq.apache.org/schema/core":journalPersistenceAdapter、"http://activemq.apache.org/schema/core":kahaDB、"http://activemq.apache.org/schema/core":levelDB、"http://activemq.apache.org/schema/core":mKahaDB、"http://activemq.apache.org/schema/core"之一: memoryPersistenceAdapter, "http://activemq.apache.org/schema/core":replicatedLevelDB, WC[##other:"http://activemq.apache.org/schema/core"]}' 是预期的。

请帮助我找出 SQL Server 持久性的配置架构,或提供特定于版本 ActiveMQ 5.9 的文档链接

【问题讨论】:

  • select @@version -> Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 版权所有 (c) Microsoft Corporation Enterprise Edition(64 位)在 Windows NT 6.1 (内部版本 7601:Service Pack 1)
  • 好的,谢谢 - 更新了您的邮件正文和相应的标签
  • 您引用的文档似乎已过时。如果您查看xsd,您会看到标签已重命名为journalPersistenceAdapter,并且属性也有所改变。 xsd 告诉您(以一种不方便的格式)XML 文档必须是什么样子才能正确解析。
  • @Ralf 谢谢,请发布一个有效的配置,而不仅仅是一个满足解析器的有效 xml sn-p,这太容易了。
  • @GeorgePolevoy 如果我有的话我会的。只是认为由于文档已过时,您可以使用 xsd 来帮助自己。

标签: sql-server sql-server-2008-r2 activemq messaging event-sourcing


【解决方案1】:

这是我用于 oracle 的。也许这只是从数据源(与任何其他数据源一样)更改 jdbc 信息的问题

(抱歉,这里没有可供测试的 SQL Server)

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:amq="http://activemq.apache.org/schema/core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
      http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">

    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}">
        <destinationPolicy>
            <policyMap>
                <policyEntries>
                    <policyEntry topic=">" producerFlowControl="true">
                        <pendingMessageLimitStrategy>
                            <constantPendingMessageLimitStrategy limit="1000" />
                        </pendingMessageLimitStrategy>
                    </policyEntry>
                    <policyEntry queue=">" producerFlowControl="true" memoryLimit="1mb">
                    </policyEntry>
                </policyEntries>
            </policyMap>
        </destinationPolicy>

        <persistenceAdapter>
            <jdbcPersistenceAdapter dataSource="#oracle-ds" />
        </persistenceAdapter>

        <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage limit="128 mb" />
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="100 gb" />
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="50 gb" />
                </tempUsage>
            </systemUsage>
        </systemUsage>

        <transportConnectors>
            <transportConnector name="tcp" uri="tcp://0.0.0.0:61616" />
        </transportConnectors>
    </broker>

    <bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
        <property name="username" value="xxx" />
        <property name="password" value="xxx" />
        <property name="poolPreparedStatements" value="true" />
        <property name="maxActive " value="30" />
    </bean>

</beans>

【讨论】:

    猜你喜欢
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多