`

三,activemq持久化消息到mysql数据库中

阅读更多

1,将activemq的服务端的的配置放到myeclipse新建的程序中,如下图

2, 默认情况下Activemq使用KahaDB存储,注解掉KahaDB配置,改为mysql配置

  找到activemq.xml修改如下  

   <persistenceAdapter>
         <jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#mysql-ds">
         </jdbcPersistenceAdapter>
       </persistenceAdapter>  

    该配置表示,我们将要使用名称为“mysql-ds”bean的id作为mysql数据源

  

3. 配置MySql数据源

      在</broker>节点后面,增加MySQL数据源配置:

       <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
     <property name="url" value="jdbc:mysql://127.0.0.1/activemq?relaxAutoCommit=true"/>
     <property name="username" value="admin"/>
     <property name="password" value="admin"/>
     <property name="maxActive" value="200"/>
     <property name="poolPreparedStatements" value="true"/>
   </bean>

 (注意该配置和spring的配置类似 id应该与持久化的dataSource保持一致)

4,添加mysql的驱动包到lib目录中

5,整体配置如下:

<!-- START SNIPPET: example -->
<beans
  xmlns="http://www.springframework.org/schema/beans"
  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">

    <!-- Allows us to use system properties as variables in this configuration file -->
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <value>file:${activemq.conf}/credentials.properties</value>
        </property>
    </bean>

   <!-- Allows accessing the server log -->
    <bean id="logQuery" class="org.fusesource.insight.log.log4j.Log4jLogQuery"
          lazy-init="false" scope="singleton"
          init-method="start" destroy-method="stop">
    </bean>

    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" persistent="true">

        <destinationPolicy>
            <policyMap>
              <policyEntries>
                <policyEntry topic=">">
                  <pendingMessageLimitStrategy>
                    <constantPendingMessageLimitStrategy limit="1000"/>
                  </pendingMessageLimitStrategy>
                </policyEntry>
              </policyEntries>
            </policyMap>
        </destinationPolicy>

        <managementContext>
            <managementContext createConnector="false"/>
        </managementContext>

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

      <persistenceAdapter>
         <jdbcPersistenceAdapter dataDirectory="${activemq.data}" dataSource="#mysql-ds">
         </jdbcPersistenceAdapter>
      </persistenceAdapter>
            <systemUsage>
            <systemUsage>
                <memoryUsage>
                    <memoryUsage percentOfJvmHeap="70" />
                </memoryUsage>
                <storeUsage>
                    <storeUsage limit="100 gb"/>
                </storeUsage>
                <tempUsage>
                    <tempUsage limit="50 gb"/>
                </tempUsage>
            </systemUsage>
        </systemUsage>

        <transportConnectors>
            <!-- DOS protection, limit concurrent connections to 1000 and frame size to 100MB -->
            <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
            <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&amp;wireFormat.maxFrameSize=104857600"/>
        </transportConnectors>

        <!-- destroy the spring context on shutdown to stop jetty -->
        <shutdownHooks>
            <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" />
        </shutdownHooks>
    </broker>
   <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
     <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
     <property name="url" value="jdbc:mysql://127.0.0.1/activemq?relaxAutoCommit=true"/>
     <property name="username" value="admin"/>
     <property name="password" value="admin"/>
     <property name="maxActive" value="200"/>
     <property name="poolPreparedStatements" value="true"/>
   </bean>
    <import resource="jetty.xml"/>

</beans>
<!-- END SNIPPET: example -->

6,启动activemq

在Run configrations中点击Java application反键新建在main class中输入org.apache.activemq.console.Main这个类,这是activemq的启动类

配置arguments,里面输入start,最后运行即可

 

7,启动成功后,我们会在数据库中看到这activemq_acks  ,activemq_lock  ,activemq_msgs(持久化消息表)三张表

分享到:
评论

相关推荐

    activeMQ mysql 持久化

    标题中的“ActiveMQ MySQL 持久化”指的是在使用ActiveMQ消息中间件时,将消息数据存储到MySQL数据库中以实现数据的持久化。ActiveMQ是Apache软件基金会的一个开源项目,它是一个功能丰富的消息代理,支持多种消息...

    ActiveMQ配置Mysql8为持久化方式所需Jar包.rar

    - 发送和接收一些消息,检查MySQL数据库中是否正确记录了这些消息,验证持久化功能是否正常工作。 总结,配置ActiveMQ使用MySQL 8作为持久化方式涉及修改配置文件、添加必要的Jar包依赖,并确保数据库连接的正确性...

    activemq持久化jdbc所需jar包.zip

    标题中的"activemq持久化jdbc所需jar包.zip"指的是Apache ActiveMQ消息中间件在使用JDBC(Java Database Connectivity)进行消息持久化时所需的库文件集合。ActiveMQ是一款开源、高性能、跨语言的企业级消息代理,它...

    activemq-5.15.15 JDBC持久化mysql8.0+的activemq.xml.pdf

    标题中的“activemq-5.15.15 JDBC持久化mysql8.0+的activemq.xml”指的是Apache ActiveMQ的一个特定版本(5.15.15)配置文件,该配置文件用于实现消息队列的数据持久化,通过JDBC连接MySQL 8.0以上的版本。ActiveMQ...

    activemq消息持久化所需Jar包

    在分布式系统中,消息持久化是指当消息代理(如ActiveMQ)接收到消息后,会将其存储到磁盘中,即使服务器重启或出现故障,也能保证这些消息不会丢失。这在高可用性和容错性方面扮演着关键角色。 要实现ActiveMQ的...

    activemq-5.15+mysqljdbc配置.zip

    总结来说,"activemq-5.15+mysqljdbc配置.zip"提供了ActiveMQ的一个定制化版本,它集成了MySQL数据库作为持久化存储,并使用Durid作为连接池。这种配置适用于那些需要强大数据持久化和恢复能力的场景,但也需要对...

    spring集成activemq演示queue和topic 持久化

    你可以通过修改`activemq.xml`配置文件来设置持久化存储,比如将消息存储到MySQL数据库。在配置中指定数据源,如下所示: ```xml ${activemq.data} &lt;driverClassName&gt;...

    activeMQ使用JDBC所需要的jar包

    在ActiveMQ中,为了实现消息持久化,我们通常会利用JDBC(Java Database Connectivity)来存储消息数据。这确保了即使在服务器重启或故障后,消息依然能够被恢复,从而保持系统的高可用性和可靠性。本主题将详细讲解...

    Active mq jdbc持久化所需要的包.rar

    总之,"Active mq jdbc持久化所需要的包.rar"提供了使用MySQL数据库进行ActiveMQ消息持久化的必要组件。正确配置并使用这些组件,可以在保持消息可靠性的同时,利用数据库的优势来管理和保护消息数据。

    自己写的ActiveMQ的Demo例子

    2. **持久化到数据库**:为了提高可靠性,ActiveMQ 还可以配置为将消息存储在关系型数据库(如 MySQL 或 PostgreSQL)中。同样,这需要在 `activemq.xml` 配置文件中进行设置,包括连接数据库的详细信息以及具体的...

    3.1 JDBC消息存储持久化jdbc persistenceFactory高速缓存1

    - **数据流动**:消息首先会被存储在缓存中,然后在适当的时候写入到MySQL数据库。这种设计平衡了速度和可靠性,确保了高吞吐量的同时,消息也不会丢失。 总结来说,ActiveMQ的JDBC消息持久化和高速缓存是通过配置...

    ActiveMQ Master/Slave 主从配置

    配置Master/Slave环节中,需要修改ActiveMQ配置文件activemq.xml,在其中添加数据源配置,并调整persistenceAdapter的设置以适应JDBC方式的持久化。配置文件修改完成后,需要将修改后的配置文件复制到另一台虚拟机的...

    SpringMvc+Eclipselink+JPA+ActiveMQ+MySQL在线聊天

    - 在这个项目中,Eclipselink用于将聊天记录等数据持久化到MySQL数据库中。 3. **JPA (Java Persistence API)**: - JPA是Java标准,定义了如何在Java应用中管理和持久化对象。 - 它提供了一套API来映射Java类到...

    activemq activeMq笔记

    在 ActiveMQ 中,生产者可以将消息发送到消息队列中,而消费者则可以从队列中取出消息进行处理。这种模式使得消息的发送者和接收者不需要同时在线。 - **点对点通信**:在这种模式下,每个消息被发送后只会被一个...

    ActiveMQ5.12.1 安装与配置.docx

    - 发送一条消息到该队列,确保消息能够正确地持久化到数据库中。 2. **环境信息** - 操作系统: Linux Ubuntu 3.19.0-15-generic #15-Ubuntu - ActiveMQ版本: ActiveMQ 5.12.1 - 数据库: MySQL 5.6.27 - JDK...

    ActiveMQ的activemq.xml详细配置讲解

    对于与数据库的集成,如`activemq数据库,验证持久化标准配置.txt`所示,ActiveMQ支持使用JDBC进行持久化,确保在故障恢复时数据的完整性。 总之,`activemq.xml`配置文件是管理ActiveMQ核心行为的核心,通过细致地...

    apache-activemq-5.16.1.rar

    它支持基于文件系统和关系数据库(如MySQL、PostgreSQL)的持久化策略。 3. **协议支持**:除了JMS,ActiveMQ还支持STOMP、AMQP、XMPP、OpenWire等多种协议,允许与不同平台和语言的系统进行交互。 4. **网络连接*...

    activemq-store-jdbc-2.0.jar.zip

    `activemq-store-jdbc-2.0.jar`这个库就是ActiveMQ利用JDBC来持久化消息存储的具体实现。 在ActiveMQ中,消息存储的目的是确保消息的可靠传递,即使在服务器故障或网络中断的情况下,也能保证数据不丢失。JDBC存储...

    activemq所有jar

    还有可能是数据库连接驱动,如`mysql-connector-java.jar`,因为ActiveMQ可以使用关系型数据库来持久化消息,例如MySQL。 在实际应用中,这些jar文件会被添加到项目的类路径中,使得开发人员能够构建基于ActiveMQ的...

Global site tag (gtag.js) - Google Analytics