Spring集成ActiveMQ配置
activemq用法

activemq用法ActiveMQ是一个消息中间件,它实现了Java Message Service (JMS)规范,通过提供高性能、可靠的消息传递机制,帮助开发人员构建分布式系统和异步应用程序。
以下是关于ActiveMQ的一些常见用法:1. 消息队列:ActiveMQ允许应用程序通过消息队列进行异步通信。
发送方将消息放入队列中,接收方可以从队列中获取消息进行处理。
这种方式可以实现解耦和异步处理,提高应用程序的可伸缩性和性能。
2. 发布/订阅模型:ActiveMQ还提供了发布/订阅模型,允许发布者将消息发布到主题(Topic),然后订阅者可以从主题中订阅消息进行处理。
这种模型适用于广播和通知场景,可以实现消息的多播。
3. 消息传递可靠性:ActiveMQ提供了多种机制来确保消息传递的可靠性。
包括持久化存储、消息重发机制、事务机制等。
持久化存储可以确保即使在应用程序关闭或崩溃后,消息也不会丢失。
消息重发机制可以确保消息在网络故障或其他错误情况下的可靠传递。
4. 消息过滤和选择:ActiveMQ允许消费者使用消息选择器来选择订阅的消息。
通过指定一些条件,可以筛选出需要处理的消息,减少消费者的工作量和网络传输的开销。
5. 点对点和异步处理:ActiveMQ支持点对点的消息传递方式,也支持异步消息处理。
可以将消息发送到指定的队列,然后异步地处理消息,提高应用程序的整体性能和吞吐量。
6. 集成Spring框架:ActiveMQ与Spring框架可以很好地集成,Spring提供了ActiveMQ的连接工厂(ConnectionFactory)和JmsTemplate等组件,简化了ActiveMQ的使用和配置。
7. 监控和管理:ActiveMQ提供了Web控制台和JMX接口,用于监控和管理ActiveMQ服务器。
可以查看连接数、队列状态、消息的发送和接收情况等,并可以进行动态配置和调整。
总之,ActiveMQ是一个功能强大的消息中间件,可以帮助开发人员实现可靠、高性能的消息传递。
(转)关于ActiveMQ的配置

(转)关于ActiveMQ的配置⽬前常⽤的消息队列组建⽆⾮就是MSMQ和ActiveMQ,⾄于他们的异同,这⾥不想做过多的⽐较。
简单来说,MSMQ内置于微软操作系统之中,在部署上包含⼀个隐性条件:Server需要是微软操作系统。
(对于这点我并去调研过MSMQ是否可以部署在⾮微软系统,⽐如:Linux,只是拍脑袋想了想,感觉上是不可以)。
对于ActiveMQ,微软系统和Linux都是可以部署的。
从功能⽅⾯来说,⼀般最常⽤的就是:消息的收/发,感觉差异不⼤。
从性能上来说,⼀般的说法是ActiveMQ略⾼。
在稳定性上,个⼈感觉MSMQ更好。
如果这两种常⽤队列都⽤过的同学,应该来说最⼤的差异在于:MSMQ如果要访问远程队列(⽐如机器A上的程序访问机器B上的队列),会⽐较恶⼼。
在数据量⽐较⼤的情况之下,⼀般来说队列服务器会专门的⼀台或者多台(多台的话,⽤程序去做热备+负载⽐较⽅便,也不需要额外的硬件成本。
简单来说做法可以这样:消息发送的时候随机向着多台队列服务器上发送消息;接受的时候开多个线程去分别监听;热备⽅⾯,可以维护⼀个带状态的队列连接池,如果消息收发失败那么将状态置为不可⽤,然后起⼀个线程去定时监测坏的连接是否可⽤,这个过程⼀般情况下可以不⽤加锁,为什么,⼤家根据各⾃需要去取舍吧)。
最近搞完了短彩信的⽹关连接服务,这两种队列我均使⽤了。
⼤致的过程是这样的:上层应⽤如果要发端彩信,那么将消息直接发送⾄ActiveMQ(⽬前⽤的就是上⾯说的多台热备+负载,因为实际中下⾏量⾮常⼤5千万条/天以上),然后端彩信⽹关连接服务部署多套,每套均依赖本机的MSMQ。
为什么呢?⽤ActiveMQ的原因是:上层应⽤程序和⽹关连接服务彼此独⽴,消息需要跨机访问。
⽤MSMQ的原因是:ActiveMQ中的数据是⼀条不分省的⼤队列,⽹关连接服务需要按省流控,所以端彩信⽹关连接服务:⾸先把消息从ActiveMQ取出来,然后存⾄本机上的分省MSMQ,这样做另外的⼀个好处就是:ActiveMQ不⾄于过多挤压,他的数据会分摊到N台短彩信⽹关连接服务所部署的机器上的MSMQ之中,也就说MSMQ可以起到分摊数据和缓冲的作⽤。
SpringBootActiveMQ如何设置访问密码

SpringBootActiveMQ如何设置访问密码Apache ActiveMQ是Apache出品,是最流⾏的,能⼒很强的开源消息总线。
默认情况下,程序连接ActiveMQ是不需要密码的,为了安装起见,需要设置密码,提⾼安全性。
本⽂分享如何设置访问ActiveMQ的账号密码。
⼩编使⽤的ActiveMQ版本是apache-activemq-5.15.13。
⼀、设置控制台管理密码ActiveMQ使⽤的是jetty服务器,找到 ActiveMQ安装⽬录下的\conf\jetty.xml⽂件:<bean id="adminSecurityConstraint" class="org.eclipse.jetty.util.security.Constraint"><property name="name" value="BASIC" /><property name="roles" value="admin" /><!-- set authenticate=false to disable login --><property name="authenticate" value="true" /></bean>注意:authenticate的属性默认为"true",登录管理界⾯时需要输⼊账户和密码;如果是“false”,需要改为"true"。
修改管理界⾯登录时的⽤户名和密码,在conf/jetty-realm.properties⽂件中添加⽤户## ---------------------------------------------------------------------------## Licensed to the Apache Software Foundation (ASF) under one or more## contributor license agreements. See the NOTICE file distributed with## this work for additional information regarding copyright ownership.## The ASF licenses this file to You under the Apache License, Version 2.0## (the "License"); you may not use this file except in compliance with## the License. You may obtain a copy of the License at#### /licenses/LICENSE-2.0#### Unless required by applicable law or agreed to in writing, software## distributed under the License is distributed on an "AS IS" BASIS,## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.## See the License for the specific language governing permissions and## limitations under the License.## ---------------------------------------------------------------------------# Defines users that can access the web (console, demo, etc.)# username: password [,rolename ...]# admin: admin, admin# user: user, userwiener: wiener1237, admin配置信息按顺序解释,分别是:⽤户名、密码、⾓⾊名⼆、消息⽣产者和消费者密码认证在\conf\activemq.xml中broker 标签最后添加⽣产者和消费者密码认证信息:<!-- destroy the spring context on shutdown to stop jetty --><shutdownHooks><bean xmlns="/schema/beans" class="org.apache.activemq.hooks.SpringContextHook" /></shutdownHooks><!-- add plugins --><plugins><simpleAuthenticationPlugin><users><authenticationUser username="${ername}" password="${activemq.password}" groups="users,admins"/></users></simpleAuthenticationPlugin></plugins></broker>ername和activemq.password的值在⽂件credentials.properties中配置,见如下步骤。
ActiveMQ入门

ActiveMQ入门作者:一路向北摘要:本文主要讲述ActiveMQ的基本知识和使用方法,并简单结合spr ing使用ActiveMQ。
一、ActiveMQ特性和使用总览企业消息软件从80年代起就存在,它不只是一种应用间消息传递风格,也是一种集成风格。
因此,消息传递可以满足应用间的通知和互相操作。
但是开源的解决方案是到最近10年才出现的。
Apache ActiveMQ就是其中一种。
它使应用间能以异步,松耦合方式交流。
本章将向您介绍ActiveMQ。
1、ActiveMQ的特性ActiveMQ是Apache软件基金下的一个开源软件,它遵循JMS1.1规范(Java Message Service),是消息驱动中间件软件(MOM)。
它为企业消息传递提供高可用,出色性能,可扩展,稳定和安全保障。
ActiveMQ使用Apac he许可协议。
因此,任何人都可以使用和修改它而不必反馈任何改变。
这对于商业上将ActiveMQ用在重要用途的人尤为关键。
MOM的工作是在分布式的各应用之间调度事件和消息,使之到达指定的接收者。
所以高可用,高性能,高可扩展性尤为关键。
ActiveMQ的目标是在尽可能多的平台和语言上提供一个标准的,消息驱动的应用集成。
ActiveMQ实现JMS规范并在此之上提供大量额外的特性。
下面是一个高层次的特性列表。
欢迎访问本人百度空间:/snowslince浣花草堂·遵循JMS规范----理解ActiveMQ的起始点是明白ActiveMQ的各种特性是JMS1.1规范的实现。
本章后面将讨论JMS规范提供的好处和保证。
它们包括同步和异步消息传递,一次和只有一次的消息传递,对于预订者的持久消息等等。
依附于JMS规范意味着,不论JMS消息提供者是谁,同样的基本特性都是有效的。
·连接----ActiveMQ提供各种连接选择,包括HTTP,HTTPS,IP多点传送,SSL,STOMP,TCP,UDP,XMPP等。
activeMQ集群的使用与配置

Clustering(集群)ActiveMQ从多种不同的方面提供了集群的支持。
1、Queue consumer clustersActiveMQ支持订阅同一个queue的consumers上的集群。
如果一个consumer 失效,那么所有未被确认(unacknowledged)的消息都会被发送到这个queue上其它的consumers。
如果某个consumer的处理速度比其它consumers更快,那么这个consumer就会消费更多的消息。
需要注意的是,笔者发现AcitveMQ5.0版本的Queue consumer clusters存在一个bug:采用AMQ Message Store,运行一个producer,两个consumer,并采用如下的配置文件:那么经过一段时间后可能会报出如下错误:ERROR[ActiveMQTransport:tcp:///127.0.0.1:1843-RecoveryListenerAdapter.java:58-RecoveryListenerAdapter] Message id ID:versus-1837-1203915536609-0:2:1:1:419 could not be recovered from the data store!Apache官方文档说,此bug已经被修正,预定在5.1.0版本上体现。
2、Broker clusters一个常见的场景是有多个JMS broker,有一个客户连接到其中一个broker。
如果这个broker失效,那么客户会自动重新连接到其它的broker。
在ActiveMQ 中使用failover:// 协议来实现这个功能。
ActiveMQ3.x版本的reliable://协议已经变更为failover://。
如果某个网络上有多个brokers而且客户使用静态发现(使用Static Transport 或Failover Transport)或动态发现(使用Discovery Transport),那么客户可以容易地在某个broker失效的情况下切换到其它的brokers。
linux下activemq安装与配置

linux下activemq安装与配置什么是消息中间件(MQ)?1.1 为什么会需要消息队列(MQ)? 主要原因是由于在⾼并发环境下,由于来不及同步处理,请求往往会发⽣堵塞,⽐如说,⼤量的insert,update之类的请求同时到达MySQL,直接导致⽆数的⾏锁表锁,甚⾄最后请求会堆积过多,从⽽触发too many connections错误。
通过使⽤消息队列,我们可以异步处理请求,从⽽缓解系统的压⼒。
2.2 什么是消息中间件 消息中间件利⽤⾼效可靠的消息传递机制进⾏平台⽆关的数据交流,并基于数据通信来进⾏分布式系统的集成。
通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
对于消息中间件,常见的⾓⾊⼤致也就有Producer(⽣产者)、Consumer(消费者) 常见的消息中间件产品: (1)ActiveMQ ActiveMQ 是Apache出品,最流⾏的,能⼒强劲的开源消息总线。
ActiveMQ 是⼀个完全⽀持JMS1.1和J2EE 1.4规范的 JMS Provider实现。
我们在本次课程中介绍 ActiveMQ的使⽤。
(2)RabbitMQ AMQP协议的领导实现,⽀持多种场景。
淘宝的MySQL集群内部有使⽤它进⾏通讯,OpenStack开源云平台的通信组件,最先在⾦融⾏业得到运⽤。
(3)ZeroMQ 史上最快的消息队列系统 (4)Kafka Apache下的⼀个⼦项⽬。
特点:⾼吞吐,在⼀台普通的服务器上既可以达到10W/s的吞吐速率;完全的分布式系统。
适合处理海量数据。
是Apache的⼀个开源项⽬,它是⼀个能⼒强劲的开源消息总线,也是⼀个中间件产品。
它是JMS的⼀个实现。
⾸先了解⼀下JMSJMS(Java Messaging Service)是Java平台上有关⾯向消息中间件的技术规范,它便于消息系统中的Java应⽤程序进⾏消息交换,并且通过提供标准的产⽣、发送、接收消息的接⼝简化企业应⽤的开发。
ActiveMQ(中文)参考手册

1 JMS在介绍Act iveMQ之前,首先简要介绍一下JMS规范。
1.1 JMS的基本构件1.1.1 连接工厂连接工厂是客户用来创建连接的对象,例如Acti veMQ提供的Act iveMQ Conne ction Facto ry。
1.1.2 连接JMS Connec tion封装了客户与JMS提供者之间的一个虚拟的连接。
1.1.3 会话JMS Sessio n是生产和消费消息的一个单线程上下文。
会话用于创建消息生产者(produc er)、消息消费者(consum er)和消息(messag e)等。
会话提供了一个事务性的上下文,在这个上下文中,一组发送和接收被组合到了一个原子操作中。
1.1.4 目的地目的地是客户用来指定它生产的消息的目标和它消费的消息的来源的对象。
JMS1.0.2规范中定义了两种消息传递域:点对点(PTP)消息传递域和发布/订阅消息传递域。
点对点消息传递域的特点如下:•每个消息只能有一个消费者。
•消息的生产者和消费者之间没有时间上的相关性。
无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。
发布/订阅消息传递域的特点如下:•每个消息可以有多个消费者。
•生产者和消费者之间有时间上的相关性。
订阅一个主题的消费者只能消费自它订阅之后发布的消息。
JMS规范允许客户创建持久订阅,这在一定程度上放松了时间上的相关性要求。
持久订阅允许消费者消费它在未处于激活状态时发送的消息。
在点对点消息传递域中,目的地被成为队列(queue);在发布/订阅消息传递域中,目的地被成为主题(topic)。
1.1.5 消息生产者消息生产者是由会话创建的一个对象,用于把消息发送到一个目的地。
1.1.6 消息消费者消息消费者是由会话创建的一个对象,它用于接收发送到目的地的消息。
activemq maxinactivityduration

activemq maxinactivityduration摘要:I.简介- 简述ActiveMQ- 介绍maxInactivityDuration 的作用II.配置maxInactivityDuration- 讲解如何配置maxInactivityDuration- 分析配置选项及其影响III.maxInactivityDuration 的作用- 详细解释maxInactivityDuration 在ActiveMQ 中的作用- 描述其对消息队列和消费者的影响IV.实际应用案例- 提供一个使用maxInactivityDuration 的实际案例- 分析案例中如何利用maxInactivityDuration 优化消息队列V.总结- 总结maxInactivityDuration 的重要性- 提醒用户在配置时应注意的事项正文:ActiveMQ 是一个广泛使用的开源消息队列,它支持多种消息协议,如JMS、MQTT 等。
在ActiveMQ 中,有一个参数叫做maxInactivityDuration,它的作用是设置消费者空闲的最大时间。
当消费者在一段时间内没有接收消息时,ActiveMQ 会认为该消费者处于空闲状态,并触发相应的处理逻辑。
配置maxInactivityDuration 非常简单,只需要在ActiveMQ 的配置文件中添加或修改相应的参数即可。
例如,可以将maxInactivityDuration 设置为30000(30 秒),这样当消费者在30 秒内没有接收消息时,ActiveMQ 会认为消费者处于空闲状态。
maxInactivityDuration 在ActiveMQ 中的作用主要体现在以下几点:1.节省资源:当消费者长时间没有接收消息时,可以降低其优先级,从而减少资源占用。
2.提高吞吐量:通过设置合理的maxInactivityDuration,可以避免消费者长时间空闲而导致的性能下降,从而提高整个消息队列的吞吐量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SpringᬫŝActiveMQ?3Email:suhuanzheng7784877@1.Spring 2.5.6ActiveMQ 5.4.2apacheSpring ActiveMQ JMS2.ActiveMQactivemq-all-5.4.2.jar activemq jar lib jar lib/lib/activation-1.1.jar/lib/activemq-camel-5.4.2.jar/lib/activemq-console-5.4.2.jar/lib/activemq-core-5.4.2.jar/lib/activemq-jaas-5.4.2.jar/lib/activemq-pool-5.4.2.jar/lib/activemq-protobuf-1.1.jar/lib/activemq-spring-5.4.2.jar/lib/activemq-web-5.4.2.jarSpring jar/lib/spring-beans-2.5.6.jar/lib/spring-context-2.5.6.jar/lib/spring-context-support-2.5.6.jar/lib/spring-core-2.5.6.jar/lib/spring-jms-2.5.6.jar/lib/spring-tx.jarjar/lib/geronimo-j2ee-management_1.1_spec-1.0.1.jar/lib/jms-1.1.jar/lib/log4j-1.2.15.jar/lib/slf4j-api-1.6.1.jar/lib/slf4j-nop-1.6.1.jarjar3.Spring<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xsi:schemaLocation="/schema/bean s/schema/beans/spring-beans-2.5.xsd /schema/context/schema/context/spring-context-2.5.x sd"default-autowire="byName"><!-- connectionFactory --><bean id="jmsFactory"class="org.apache.activemq.pool.PooledConnectionFactory"destroy-method="stop"><property name="connectionFactory"><beanclass="org.apache.activemq.ActiveMQConnectionFactory"><property name="brokerURL"><value>tcp://127.0.0.1:61616</value></property></bean></property><property name="maxConnections"value="100"></property> </bean><!-- Spring JMS Template --><bean id="jmsTemplate"class="org.springframework.jms.core.JmsTemplate"><property name="connectionFactory"><ref local="jmsFactory"/></property><property name="defaultDestinationName"value="subject"/><!-- false p2p true --><property name="pubSubDomain"value="true"/></bean><!-- --><bean id="destination"class="mand.ActiveMQTopic"><!-- --><constructor-arg index="0"value="subject"/></bean><!-- --><bean id="listenerContainer"class="org.springframework.jms.listener.DefaultMessageListener Container"><property name="concurrentConsumers"value="10"/><property name="connectionFactory"ref="jmsFactory"/><property name="destinationName"value="subject"/><property name="messageListener"ref="messageReceiver"/><property name="pubSubNoLocal"value="false"></property> </bean><bean id="messageReceiver"class="com.liuyan.jms.consumer.ProxyJMSConsumer"><property name="jmsTemplate"ref="jmsTemplate"></property> </bean></beans>4.SpringSpring JMSpublic class HelloSender {/*** @param args*/public static void main(String[] args) {ApplicationContext applicationContext = newClassPathXmlApplicationContext(new String[]{ "classpath:/spring/applicationContext-jms.xml" });JmsTemplate template = (JmsTemplate) applicationContext.getBean("jmsTemplate");Destination destination = (Destination) applicationContext .getBean("destination");template.send(destination, new MessageCreator() {public Message createMessage(Session session) throws JMSException {return session.createTextMessage("Hello ActiveMQText Message");}});System.out.println("JMS");}}/*** JMS*** <p>** <p>* * <p>*/public class ProxyJMSConsumer {public ProxyJMSConsumer() {}private JmsTemplate jmsTemplate;public JmsTemplate getJmsTemplate() {return jmsTemplate;}public void setJmsTemplate(JmsTemplate jmsTemplate) { this.jmsTemplate = jmsTemplate;}/*** onMessage(Message message)*/public void recive() {ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{ "classpath:/spring/applicationContext-jms.xml" });Destination destination = (Destination) applicationContext .getBean("destination");while (true) {try {TextMessage txtmsg = (TextMessage) jmsTemplate.receive(destination);if (null != txtmsg) {System.out.println("[DB Proxy] " + txtmsg);System.out.println("[DB Proxy] : "+ txtmsg.getText());} elsebreak;} catch (Exception e) {e.printStackTrace();}}}}SpringJMSmainpublic class JMSTest {/*** @param args*/public static void main(String[] args) {ApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{ "classpath:/spring/applicationContext-jms.xml" });ProxyJMSConsumer proxyJMSConsumer = (ProxyJMSConsumer) applicationContext.getBean("messageReceiver");System.out.println("");}}ActiveMQ61616 2。