摘要: 1, 下载Arlang的下载:http://www.erlang.org/download/otp_win64_17.4.exeRabbitMQ下载:http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.0/rabbitmq-server-3.5... 阅读全文
posted @ 2015-05-26 18:00 RosyDawn 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 1,优缺点优点缺点支持集群,速度和性能可能会高于其他MQ产品只支持点对点的消费方式不会丢失消息,稳定性要好消息的消费者可以时间无关2, 模式 普通模式镜像模式单一模式集群默认的集群模式把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案非集群模式说明对于Queue来说,消息实体只... 阅读全文
posted @ 2015-05-14 17:53 RosyDawn 阅读(792) 评论(0) 推荐(1) 编辑
摘要: 下载ActiveMQ下载最新的发布版本。下载地址http://activemq.apache.org/activemq-5111-release.html(注意:Apache ActiveMQ 5.11.0, It is build with and requires jdk 1.7,ActiveM... 阅读全文
posted @ 2015-05-14 17:38 RosyDawn 阅读(777) 评论(0) 推荐(0) 编辑

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(持久化消息表)三张表

posted @ 2015-05-27 11:39 RosyDawn 阅读(450) 评论(0) 推荐(0) 编辑
摘要: Producer实际发布消息的角色,Producer发送消息的时候,首先是发送到Exchange,然后RabbitMQ根据Exchange的类型和逻辑来判断应该发送到那个Queue中,所以Queue必须bind到特定的Exchange上才能获取消息,绑定的时候可以提供一个routing_key来判断... 阅读全文
posted @ 2015-05-14 17:49 RosyDawn 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 说明:JMSAMQP定义java apiWire-protocol跨语言否是跨平台否是Model提供两种消息模型:(1)peer-2-peer(2)pub/sub提供五中消息模型:(1)direct exchange(2)fanout exchange(3)topic exchange(4)head... 阅读全文
posted @ 2015-05-14 17:46 RosyDawn 阅读(762) 评论(0) 推荐(0) 编辑
摘要: hibernate的介绍:hibernate是一个优秀的java持久化(含义:将程序中数据在瞬时状态和持久状态间转换的机制)层解决方案,是主流的的关系映射工具(ORM),hibernate实际上是JDBC的封装, 阅读全文
posted @ 2013-11-07 22:05 RosyDawn 阅读(137) 评论(0) 推荐(0) 编辑
摘要: (1)dispatcher: 最常用的结果类型是dispatcher,它是默认的结果类型,struts2在后台使用Servlet API的Requestdispacher来转发请求 转发请求:重新请求服务器的动作,有服务器访问目标地址(实现了数据共享)(2)redirect: redirect类型在后台使用HttpResponse对象sendRedirect()方法将请求重定向到一个指定的URL 重定向:浏览器的动作,请求重新定位到一个URL(3)redirectAction: redirectAction类型与redirct类型相似,都是使用HttpResponse对象的send... 阅读全文
posted @ 2013-11-05 13:16 RosyDawn 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 、 struts2框架是基于MVC模式的,是由webwork和struts1合并的一个全新的框架。struts2的核心是webwork,采用拦截器的机制处理用户请求,这样的设计也使得业务逻辑控制器能够与servlet API完全脱离。 (1)客户端发送一个请求,当web容器接受轻请求(httpServletRequest)它将请求传递给一个标准的过滤链包括(ActionContextCleanUp,Other filters )过滤器。 (2)接下来需要调用FliterDispatcher核心控制器,然后由它调用ActionMapper确认请求哪个Action,ActionMapper返回一个 阅读全文
posted @ 2013-11-05 12:59 RosyDawn 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 拦截器的作用:拦截器的方法在Action执行之前或者执行之后自动的执行,从而将通用的操作动态的插入到action执行的前后,这样用利于系统的解耦1:所有的拦截器的超级接口interceptor,Action去实现这个接口Interceptor有三个方法(init(),destory(),interceptor())Init()方法:在服务器启动的时候加载一次,并且只加载一次;Destroy()方法:当拦截器销毁时执行的方法;Interceptor()方法:其中里边有一个参数invocationpackage com.accp.intercepter; import com.opensympho 阅读全文
posted @ 2013-11-05 12:58 RosyDawn 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 直接访问Servlet API将使Action类与servlet API 耦合在一起,Servlet API对象都由Servlet 容器来构造的。 为了避免与Servlet API耦合在一起,方便Action类的测试,Struts2框架对Servlet API中的HttpServletRequest,HttpSession和ServletContext进行了封装,构造了三个Map对象来替代这三种对象,在Action类中,可以直接访问HttpServletRequest,HttpSession和ServletContext对应的Map对象,Struts2提供了com.opensymphone.. 阅读全文
posted @ 2013-11-05 12:56 RosyDawn 阅读(181) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示