zoukankan      html  css  js  c++  java
  • ActiveMQ-5.15.2下载和启动(windows)

    一、下载和部署

    我的ActiveMQ版本是 5.15.2,参照别人家的博客,下载和启动照样成功。别人家的博客地址:

    http://blog.csdn.net/clj198606061111/article/details/38145597

    启动成功后,访问 http://localhost:8161/admin 输入用户名和密码 admin / admin(apache-activemq-5.15.2confuser.properties) 

    二、配置文件详解

    下载 https://gitlab.com/zhuwenjoyce/TestActiveMQ.git ,启动ActiveMQ在http端口8161和tcp端口61616。

    在eclipse里面打开TestActiveMQ项目,web.xml里面看到如下配置加载ActiveMQ:

    <context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:applicationContext.xml,classpath*:ActiveMQ.xml</param-value>
        </context-param>

    在src目录下打开ActiveMQ.xml,配置ActiveMQ连接:

    <amq:connectionFactory id="amqConnectionFactory"
            brokerURL="tcp://localhost:61616" userName="admin" password="admin"  />

    配置spring容器里的ActiveMQ连接工厂:

    <bean id="connectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
            <!-- 目标ConnectionFactory对应真实的可以产生JMS Connection的ConnectionFactory -->  
              <property name="targetConnectionFactory" ref="amqConnectionFactory"></property>
              <!-- 同上,同理 -->
            <!-- <constructor-arg ref="amqConnectionFactory" /> -->
            <!-- Session缓存数量 -->
            <property name="sessionCacheSize" value="100" />
            <!-- 接收者ID,用于Topic订阅者的永久订阅-->
            <property name="clientId" value="client-A" /> 
        </bean>

    配置spring容器里的jms规范(ActiveMQ属于jms规范的一种实现)的queue队列处理器:

    <bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
            <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->  
            <constructor-arg ref="connectionFactory" />
            <!-- 非pub/sub模型(发布/订阅),即队列模式 -->
            <property name="pubSubDomain" value="false" />
            <!-- 订阅消息持久化 -->
            <property name="deliveryPersistent" value="true" />
            <!-- 配置持久化,同上 deliveryPersistent
            <property name="deliveryMode" value="2" />
            -->
        </bean>

    配置spring容器里的jms规范(ActiveMQ属于jms规范的一种实现)的topic主题处理器:

    <bean id="jmsTopicTemplate" class="org.springframework.jms.core.JmsTemplate">
             <!-- 这个connectionFactory对应的是我们定义的Spring提供的那个ConnectionFactory对象 -->  
            <constructor-arg ref="connectionFactory" />
            <!-- pub/sub模型(发布/订阅) -->
            <property name="pubSubDomain" value="true" />
            <!-- 订阅消息持久化 -->
            <property name="deliveryPersistent" value="true" />
            <!-- 配置持久化,同上 deliveryPersistent
            <property name="deliveryMode" value="2" />
            -->
        </bean>

    配置queue消息队列name为test.queue的消息处理器queueReceiver1或queueReceiver1,如果发送name为test.queue的消息,则为如下配置中queueReceiver1或queueReceiver1任意一个处理器处理:

    <jms:listener-container destination-type="queue" container-type="default" connection-factory="connectionFactory" acknowledge="auto">
            <jms:listener destination="test.queue" ref="queueReceiver1"/>
            <jms:listener destination="test.queue" ref="queueReceiver2"/>
        </jms:listener-container>

    配置response消息回信:

    <jms:listener-container destination-type="queue" container-type="default" connection-factory="connectionFactory" acknowledge="auto">
            <jms:listener destination="test.queue.response" ref="queueReceiver1Res"/>
        </jms:listener-container>

    配置topic主题列表的处理器,如果发送消息主题name为test.topic,则所有主题监听者都要执行对此消息的处理:

    <jms:listener-container destination-type="durableTopic" container-type="default" connection-factory="connectionFactory" acknowledge="auto" client-id="client-A">
            <!-- 注意:定义 subscription(即:durableSubscriptionName)持久化主题名字 -->
            <jms:listener destination="test.topic" subscription="topic_receiver1" ref="topicReceiver1"/>
            <jms:listener destination="test.topic" subscription="topic_receiver2" ref="topicReceiver2"/>
        </jms:listener-container>

     三,项目代码结合配置文件解析

    ActivemqController类代表前端请求过来的消息,根据不同消息,发送不同name命名消息到队列或者主题。

    com.tgb.SpringActivemq.mq.producer.queue.QueueSender   send()方法,发送指定name消息(test.queue)。根据上述配置文件,订阅了test.queue消息的是:queueReceiver1 和 queueReceiver2

    于是com.tgb.SpringActivemq.mq.consumer.queue.QueueReceiver1 或 queueReceiver2 就接收到了消息并进行处理。

    在QueueReceiver1 中还对response进行了回信处理。

    topic方法以此类推。

  • 相关阅读:
    为MySQL的root用户设定密码
    Sublime Text 3安装Package Control失败
    从系统关机后主机仍在运行
    如何判断一个数是否是质数?
    python之lambda函数
    yum的一些命令使用方法
    NopCommerce架构分析-数据持久层
    NopCommerce架构分析-Cache的应用
    NopCommerce架构分析-源码结构和架构
    下载图片
  • 原文地址:https://www.cnblogs.com/zhuwenjoyce/p/7727602.html
Copyright © 2011-2022 走看看