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方法以此类推。

原文地址:https://www.cnblogs.com/zhuwenjoyce/p/7727602.html