ActiveMQ-5.15.2下载和启动(windows)

摘要:
在eclipse中打开TestActiveMQ项目,并在web.xml中看到以下配置以加载ActiveMQ:<context param><param name>contextConfigLocation</param name><paramvalue>classpath*:applicationContext.xml,classpath*:ActiveMQ.xml</param value></context param>在src目录中打开ActiveMQ.xml,并配置ActiveMQ连接:在spring容器中配置ActiveMQ连接工厂:˂!--如上所述配置持久性:deliveryPersistent--˃在spring容器中配置jms规范的主题处理器:˂!
一、下载和部署

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

免责声明:文章转载自《ActiveMQ-5.15.2下载和启动(windows)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何查看自己的laravel版本dhcp 提示could not load neutron.agent下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

网站开发(周四):项目后台数据管理(实战)

前言:Django是通过模型(Model)来操作数据库,Django能自动根据模型代码中定义的类自动生成相应数据库表,也即Django自动帮我们把代码转化成SQL语句,然后再执行SQL语句生成相应数据库表。每个模型都是django.db.models.Model的子类,每个模型在Django中的存在形式为一个Python类,模型里的每个类代表数据库中的一个...

JMS简介

        任何一个系统从整体上来看,其实质就是由无数个小的服务或事件(我们可以称之为事务单元)有机地组合起来的。对于系统中任何一个比较复杂的功能,都是通过调用各个独立的事务单元以实现统一的协调运作而实现的。现在我们的问题是,如果有两个完全独立的服务(比如说两个不同系统间的服务)需要相互交换数据,我们该如何实现?         第一种方法,估计也是用...

Java安全之RMI协议分析

Java安全之RMI协议分析 0x00 前言 在前面其实有讲到过RMI,但是只是简单描述了一下RMI反序列化漏洞的利用。但是RMI底层的实现以及原理等方面并没有去涉及到,以及RMI的各种攻击方式。在其他师傅们的文章中发现RMI的攻击方式很多。 所以在此去对RMI的底层做一个分析,后面再去对各种攻击方式去做一个了解。 0x01 底层协议概述 RPC RPC(...

MQ框架的比较

MQ框架的比较MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求。下面我列出这些MQ之间的对比数据和资料。 第一部分:RabbitMQ,ActiveMq,ZeroMq比较 1、 TPS比较 一 ZeroMq 最好,RabbitMq 次之, ActiveMq...

ActiveMQ集群搭建

在虚拟机安装centos7,要提前安装好jdk环境 工作流程:在ZooKeeper中管理多个Broker节点,根据 Master选举策略让其中一个 Broker选举为Master(只有Master才具备对外提供服务的能力),剩下Broker为slave。编码时,client端(消费者)通过failover协议来连接ActiveMQ集群。 一、zookeep...

shiro细节、默认的过滤器、匹配模式和顺序

部分细节 [urls] 部分的配置,其格式是:“url=拦截器[参数],拦截器[参数]”; 如果当前请求的url匹配[urls] 部分的某个url模式,将会执行其配置的拦截器。 anon(anonymous)拦截器表示匿名访问(即不需要登录即可访问) authc(authentication)拦截器表示需要身份认证通过后才能访问 shiro中默认的过滤...