activemq

Need clarification on JMS vs ActiveMQ bean/resource configuration

此生再无相见时 提交于 2019-11-29 11:01:28
There appears to be some inconsistency on how to use JMS resources, and setting up activationConfig with proper @ActivationConfigProperty on a @MessageDriven annotation. First, here is my resource config ( glassfish-resources.xml , but translatable to other deployment descriptors). This is applied to Glassfish ( asadmin add-resources glassfish-resources.xml ) along with the ActiveMQ Resource Adapter : <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources

ActiveMQ、RabbitMQ、ZeroMQ、Kafka、RocketMQ选型

╄→гoц情女王★ 提交于 2019-11-29 10:34:36
市面上很多MQ产品,比如ActiveMQ、RabbitMQ、ZeroMQ、Kafka、RocketMQ,到底哪种更加适合呢? RabbitMQ: 消息堆积的支持并不好,当大量消息积压的时候,会导致RabbitMQ的性能急剧下降。 每秒钟可以处理几万到十几万条消息。 RabbitMQ使用的编程语言Erlang,二次开发难度大。 最流行的消息中间之一。 RocketMQ: RocketMQ响应时延大多数情况下可以做到毫秒级的响应,适合在线业务场景。 周边生态系统的集成和兼容程度要略逊一筹。 支持事务消息。 RocketMQ的每秒钟大概能处理几十万条消息。 Kafka: Kafka与在大数据和流计算领域支持很好。 Kafka使用Scala和Java语言开发。 每秒钟可以处理几十万条消息,Kafka的极限处理能力可以超过每秒2000万条 同步收发消息的响应时延比较高,不太适合在线业务场景。 ActiveMQ: 已经脱离正轨。 ZeroMQ: 不是一个完整的消息队列产品 来源: https://my.oschina.net/u/4178242/blog/3105691

Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,消息队列有什么优点和缺点

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-29 09:48:57
面试题 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析 其实面试官主要是想看看: 第一 ,你知不知道你们系统里为什么要用消息队列这个东西? 不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或者是别人设计的架构,他从头到尾都没思考过。 没有对自己的架构问过为什么的人,一定是平时没有思考的人,面试官对这类候选人印象通常很不好。因为面试官担心你进了团队之后只会木头木脑的干呆活儿,不会自己思考。 第二 ,你既然用了消息队列这个东西,你知不知道用了有什么好处&坏处? 你要是没考虑过这个,那你盲目弄个 MQ 进系统里,后面出了问题你是不是就自己溜了给公司留坑?你要是没考虑过引入一个技术可能存在的弊端和风险,面试官把这类候选人招进来了,基本可能就是挖坑型选手。就怕你干 1 年挖一堆坑,自己跳槽了,给公司留下无穷后患。 第三 ,既然你用了 MQ,可能是某一种 MQ,那么你当时做没做过调研? 你别傻乎乎的自己拍脑袋看个人喜好就瞎用了一个 MQ,比如 Kafka,甚至都从没调研过业界流行的 MQ 到底有哪几种。每一个 MQ 的优点和缺点是什么。每一个 MQ 没有绝对的好坏 ,但是就是看用在哪个场景可以 扬长避短

Any simple way to get the queue length of an ActiveMQ? [closed]

我只是一个虾纸丫 提交于 2019-11-29 09:24:02
How to obtain the queue length (number of unconsumed messages sent to queue) in ActiveMQ, using Java? You have to use JMX, since the Queue interface does not provide such information. Example of retrieving the size of a specific queue: // connection String url = "service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi"; JMXConnector connector = JMXConnectorFactory.connect(new JMXServiceURL(url)); MBeanServerConnection connection = connector.getMBeanServerConnection(); // get queue size ObjectName nameConsumers = new ObjectName("org.apache.activemq:type=Broker,brokerName=localhost,destinationType

去阿里面试,说了没分布式经验,面试官还是抓着这个问

╄→尐↘猪︶ㄣ 提交于 2019-11-29 08:31:51
最近有朋友去阿里面试回来和我聊天,他的简历之前我看过,在一家传统企业做后端开发的,有3年的工作经验,但是对于分布式相关的经验不是很足。 在看过他的简历之后,我建议他看一些和分布式有关的东西,但是他并没有听,回来之后找我吐槽:"我都明确说了自己没有分布式经验,但是面试官还是抓着我问了很多分布式相关的问题..." 然后说:"早知道我就听你的多看一些分布式相关的知识了..." "可是我真的没有经验那,看了理论知识真的有用吗?" 对于他的这一连串问题,我只能说:早就告诉你了你不听,我能怎么办。 但是其实他的困惑,也是很多人都有的一些困惑。我尝试着回答一下,如果你没有分布式相关的经验,那么你应该准备哪些理论知识? 首先需要强调的是,如果你没有相关经验,面试官还问你,这很正常!因为如果接触不到就可以完全不知道,或者完全不想办法去了解,那这种开发可能也正好不是大厂想要的人! Java学习圈子 首先,关于分布式,有些纯理论的知识需要开发有个基本的概念: 1、什么是分布式,什么是集群,二者有什么区别? 2、分布式的 CAP理论、BASE理论? 3、什么是分布式的数据一致性? 4、2PC、3PC、TCC等 画重点: 这部分的理论要有些基本的掌握,至少CAP要知道,包括CAP的证明 等。 还有就是和分布式相关的一些工具、框架、中间件等,如: 1.消息队列:Kafka、ActiveMQ、RabbitMQ

activeMQ入门(发布订阅消息)

淺唱寂寞╮ 提交于 2019-11-29 07:02:20
发送主题(topic)类 package com.jason.testmq; import javax.jms.Connection; import javax.jms.DeliveryMode; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.MessageProducer; import javax.jms.ObjectMessage; import javax.jms.Session; import javax.jms.TextMessage; import org.apache.activemq.ActiveMQConnectionFactory; public class SendTopic { private static final String url = "tcp://localhost:61616"; private static final String TOPIC_NAME = "choice.topic"; //private String expectedBody = "<hello>world!two</hello>"; //private String expectedBody = "stop"; public void sendMessage

13.ActiveMQ 优缺点

你说的曾经没有我的故事 提交于 2019-11-29 06:35:57
优点 ActiveMQ采用消息推送方式,所以最适合的场景是默认消息都可在短时间内被消费。数据量越大,查找和消费消息就越慢,消息积压程度与消息速度成反比。 缺点 1.吞吐量低。由于ActiveMQ需要建立索引,导致吞吐量下降。这是无法克服的缺点,只要使用完全符合JMS规范的消息中间件,就要接受这个级别的TPS。 2.无分片功能。这是一个功能缺失,JMS并没有规定消息中间件的集群、分片机制。而由于ActiveMQ是为企业级开发设计的消息中间件,初衷并不是为了处理海量消息和高并发请求。如果一台服务器不能承受更多消息,则需要横向拆分。ActiveMQ官方不提供分片机制,需要自己实现。 适用场景 对 TPS 要求比较低的系统,可以使用ActiveMQ来实现,一方面比较简单,能够快速上手开发,另一方面可控性也比较好,还有比较好的监控机制和界面 TPS :是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来 计算 使用的时间和完成的事务个数。 不适用场景 消息量巨大的场景。ActiveMQ不支持消息自动分片机制,如果消息量巨大,导致一台服务器不能处理全部消息,就需要自己开发消息分片功能(消息量巨大,Kafka就是为大数据量而生的

基于levelDB可复制master/slave(zookeeper+levelDB)

痞子三分冷 提交于 2019-11-29 06:33:15
Leveldb是一个google实现的非常高效的kv数据库,是单进程的服务,能够处理十亿级别规模Key-Value型数据,占用内存小。 基于可复制LevelDB的集群方案,需要引入ZooKeeper。根据ZooKeeper的使用方式可以分为单节点的ZooKeeper和Zookeeper集群。这里我们只讲述ZooKeeper集群,单节点不是一个可靠的选择。 4.1 Zookeeper集群配置 ZooKeeper可以在网站http://zookeeper.apache.org/ 下载。我们使用的是zookeeper-3.4.6,假设ZooKeeper分部署在下面三个目录中。 D:\MQ\apache-activemq\cluster\zookeeper1 D:\MQ\apache-activemq\cluster\zookeeper2 D:\MQ\apache-activemq\cluster\zookeeper3 4.1.1 zoo.cfg 把3个节点中config目录下的zoo_sample.cfg复制一份,改成zoo.cfg。 因为是在一台主机上部署,所以每个zoo.cfg中的clientPort不能重复;如果有三台主机,那么采用默认的clientPort就行,同理server.1、server.2、server.3可以写作<各自ip>:2888:3888。

基于zookeeper+leveldb搭建activemq集群

泪湿孤枕 提交于 2019-11-29 06:33:04
自从activemq5.9.0开始,activemq的集群实现方式取消了传统的Master-Slave方式,增加了基于zookeeper+leveldb的实现方式,其他两种方式:目录共享和数据库共享依然存在。本文主要阐述基于zookeeper和leveldb搭建activemq集群,这里需要特别提醒,本文实现的集群仅提供主备功能,避免单点故障,没有负载均衡功能。 下面开始我们的征途。 一、搭建zookeeper集群 关于搭建zookeeper集群的文章请参考: zookeeper的集群模式下的安装和配置 。 本文使用zookeeper3.4.6,3台虚拟机:192.168.2.161, 192.168.2.145, 192.168.2.146,zookeeper使用其默认端口:2181。 zookeeper集群搭建完成之后,我顺便搭建了两套监控系统:taokeeper-monitor和node-zookeeper-browser。前者是淘宝开源的一套监控zookeeper的系统,用了之后感觉得到的有效信息不多,而且集群趋势图总是不显示;后者是用nodejs实现的zookeeper节点数据查看系统,虽然页面不太美观,但是实用。 图 1. taokeeper-monitor界面 图 2. node-zookeeper-browser界面 二、搭建activemq集群 1、安装

AcitvieMQ-VirtualTopic springboot整合activemq实现虚拟topic

梦想与她 提交于 2019-11-29 05:47:38
1. Queue 点对点 一条消息只能被一个消费者消费,且是持久化消息-当没有可用的消费者时,该消息保存直到被消费位置;当消息被消费者收到但不响应时,该消息会一直保留或会转到另一个消费者,这是在有多个消费者的情况。当一个Queue有多个可用消费者的时候,可以在这些消费者中起到负载均衡的作用。 2. Topic 发布-订阅者模式 一条消息发布时,所有订阅者都会收到,Topic有2种模式,Nondurable subscription(非持久化订阅)和durable subscription(持久化订阅-每个持久化订阅者都相当于一个持久话的queue的客户端),默认是非持久化订阅。 持久化:消息产生后,会保存到文件或数据库中,直到消息被消费,Queue的持久化消息。 非持久化:消息不会保存,当没有消费者消费时,就会被丢弃 3. 代码 pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter<