ActiveMQ之VirtualTopic是什么?】的更多相关文章

一句话总结: VirtualTopic是为了解决持久化模式下多消费端同时接收同一条消息的问题.   想象这样一个场景:   生产端产生了一笔订单,作为消息MessageOrder发了出去. 这笔订单既要入订单系统归档,又要入结算系统收款,那怎么办呢?   现在分析该消息的需求:   持久化:订单很重要,丢了可不行 同时接收:既要归档,又要结算 生产端只需向一个Destination发送:一把钥匙开一把锁,保持发送的一致性,否则容易乱套   方案A: 使用Topic订阅模式,虽然满足1对多同时接收…
一.常用配置属性 以下配置文件目录均为:${activemq_home}/conf/activemq.xml 1.定期扫描清理 ActiveMQ中有一项功能:Delete Inactive Destination.可以处理 “ 没有消费者且未处理的Destination”,也就是 queue 或者 topic 在规定时间内,没有入队记录或者有效订阅,会被清理删除. 下面基于Queue的配置,Topic的配置类似.   其中属性定义:schedulePeriodForDestinationPurg…
MQ Message Queue,消息队列,FIFO 结构. 例如电商平台,在用户支付订单后执行对应的操作: 优点: 异步 削峰 解耦 缺点 增加系统复杂性 数据一致性 可用性 JMS Java Message Service,Java消息服务,类似 JDBC 提供了访问数据库的标准,JMS 也制定了一套系统间消息通信的规范: 区别于 JDBC,JDK 原生包中并未定义 JMS 相关接口. ConnectionFactory Connection Destination Session Mess…
参考网址: http://activemq.apache.org/virtual-destinations.html http://blog.csdn.net/kimmking/article/details/9773085 实际场景: 整个项目中,自己处于consumer端,与另外一个consumer共同监听topic消息,发送的是VirtualTopic消息. 原来使用的 VirtualTopic.***监听不到消息,后请教同组大神,才知道要改成Consumer.***.VirtualTop…
之前写过一篇文章讨论VirtualTopic,但觉得不够透彻,这里再根据实验结果进行一次横向对比破除模糊和选择困难症. 文章中核心对比要素是:消息副本和负载均衡 Queue的特点和优势 ActiveMQ中Queue适用于"一对一"场景,单条消息无副本,只会被一个消费者消费.如果单个队列同时有多个消费者连接,则消息会按照一定的顺序依次发送给不同消费者消费,例如10条消息发送给5个消费者,那么消费者(1,2,3,4,5)分别获得(2,1,3,2,2)条消息,这就实现了负载均衡. 所以Que…
1.  什么是ActiveMQ ActiveMQ是一种开源的,实现了JMS1.1规范的,面向消息(MOM)的中间件,为应用程序提供高效的.可扩展的.稳定的和安全的企业级消息通信.ActiveMQ使用Apache提供的授权,任何人都可以对其实现代码进行修改. ActiveMQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件.ActiveMQ实现了JMS标准并提供了很多附加的特性.这些附加的特性包括,JMX管理(java Management Extensions,…
关键字: activemq 2.6 Features    ActiveMQ包含了很多功能强大的特性,下面简要介绍其中的几个.2.6.1 Exclusive Consumer    Queue中的消息是按照顺序被分发到consumers的.然而,当你有多个consumers同时从相同的queue中提取消息时,你将失去这个保证.因为这些消息是被多个线程并发的处理.有的时候,保证消息按照顺序处理是很重要的.例如,你可能不希望在插入订单操作结束之前执行更新这个订单的操作.    ActiveMQ从4.…
郑重提示,本文转载自http://shift-alt-ctrl.iteye.com/blog/2065436 ActiveMQ提供了虚拟通道的特性(Virtual Destination),它允许一个逻辑通道(logical destination)映射成一个或者多个物理通道(physical destination);它可以非常灵活的解决"消息整合"方面的问题,它可以实现: 1) 提供了VirtualTopic特性,可以让一个订阅者的消息列表,作为Queue来消费. 2) 提供了Co…
1.    Composite Destinations  组合目的地 组合队列Composite Destinations : 允许用一个虚拟的destination代表多个destinations,这样就可以通过composite destinations在一个操作中同时向多个queue/topic发送消息. 有两种实现方式: 第一种:在客户端编码实现 第二种:在activemq.xml配置文件中实现 第一种:在客户端编码实现 在composite destinations中,多个desti…
消费端消费消息: 在 初识ActiveMQ 中我提到过,两种方法可以接收消息,一种是使用同步阻塞的ActiveMQMessageConsumer#receive方法.另一种是使用消息监听器MessageListener.这里需要注意的是,在同一个session下,这两者不能同时工作,也就是说不能针对不同消息采用不同的接收方式.否则会抛出异常.至于为什么这么做,最大的原因还是在事务性会话中,两种消费模式的事务不好管控. 先通过ActiveMQMessageConsumer#receive 方法来对…
http://activemq.apache.org/virtual-destinations.html 普通的 topic 是发布/订阅模式:消息会被广播发送给所有的订阅者,订阅者拿到的是全部消息,如下图: 而 virtual topic,在消息的传递过程中,多加了一个队列节点,如下图: 全量的消息先发送到队列,然后再分发给消费者.这么做有什么好处呢? 假定consumer1和consumer2分别是2个进程,2个进程共同处理消息,这算不算负载均衡呢? 其次,如果consumer1挂掉了,队列…
前言 JMS介绍:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信.(百度 ) 本文只测试ActiveMQ,其他消息中间件应该同理. ActiveMQ介绍 JMS常见2种消息模型: 点对点(Queues队列)生产者产生消息,仍1条消息给ActiveMQ,消费者监听ActiveMQ,从ActiveMQ中取走1条消息,并销毁这个消息,且只会有一个监听…
1 JMS 在介绍ActiveMQ之前,首先简要介绍一下JMS规范. 1.1 JMS的基本构件 1.1.1 连接工厂 连接工厂是客户用来创建连接的对象,例如ActiveMQ提供的ActiveMQConnectionFactory. 1.1.2 连接 JMS Connection封装了客户与JMS提供者之间的一个虚拟的连接. 1.1.3 会话 JMS Session是生产和消费消息的一个单线程上下文.会话用于创建消息生产者(producer).消息消费者(consumer)和消息(message)…
1 JMS 在介绍ActiveMQ之前,首先简要介绍一下JMS规范. 1.1 JMS的基本构件 1.1.1 连接工厂 连接工厂是客户用来创建连接的对象,例如ActiveMQ提供的ActiveMQConnectionFactory. 1.1.2 连接 JMS Connection封装了客户与JMS提供者之间的一个虚拟的连接. 1.1.3 会话 JMS Session是生产和消费消息的一个单线程上下文.会话用于创建消息生产者(producer).消息消费者(consumer)和消息(message)…
消费者的 destination 可以使用 wildcards 生产者的 destination 可以使用 composite destinations VirtualTopic 真是一大利器,当初读这本书就是为了弄懂这个东西,没想到书快读完了才找到,然后找到了才发现是这么简单的概念,以前对 JMS 的东西太过陌生,太过畏惧了吧! 其他的就是 ActiveMQ 的一些插件的使用了 这本书里多次提到了 Apache Camel framework,看来这玩意也挺有用的,以后有时间得好好学学!…
1. Visual Destinations 1.1 概述 虚拟Destination用来创建逻辑Destinations,客户端可以通过它来产生和消费消息,它会把消息映射到物理Destinations.ActiveMQ支持两种方式: 1. 虚拟主题(Virtual Topics) 2. 组合Destinations (Composite Destinations) 1.2 为何使用虚拟主题 ActiveMQ中,topic只有在持久订阅下才会持久化,持久订阅时,每个订阅者,都相当于一个queue…
1. Wildcards 1. Wildcards用来支持名字分层体系,它不是JMS规范的一部分,是ActiveMQ的扩展. ActiveMQ支持一下三种wildcards: 1. ".": 用于作为匹配路径上名字间的分隔符 2. “*": 用于匹配路径上的任何名字(不递归) 3. ”>“: 用于递归的匹配任何以这个名字开始的destination 2. 示例:设想你有如下两个destinations PRICE.STOCK.NASDAQ.IBM(IBM在NASDAQ的…
0.服务端开启JMX服务 一.修改${ ActiveMQ_HOME} /conf/activemq.xml文件 在<broker>标签中添加如下属性:useJMX="true"   二.修改${ActiveMQ_HOME}/conf/activemq.xml文件 将<managementContext>修改为如下配置: <managementContext>          <managementContext createConnector…
虚拟destination用来创建逻辑destination,客户端可以通过它来生产和消费消息,它会把消息映射到物理destination. ActiveMQ支持2种方式: 1:虚拟主题(Virtual Topics) 2:组合Destinations(Composite Destinations) 为什么使用虚拟主题? ActiveMQ只有在持久订阅才是持久化的.持久订阅时,每一个持久订阅者,都相当于一个queue的客户端,它会收取所有消息.这种情况下存在两个问题: 第一:同一应用内消费者端护…
使用filtered destinations,在xml配置如下: <destinationInterceptors> <virtualDestinationInterceptor> <virtualDestinations> <compositeQueue name="MY.QUEUE"> <forwardTo> <filteredDestination selector="odd='yes'" q…
1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Unix 等几个版本,楼主这里选择了Linux 版本下进行开发. 下载完安装包,解压之后的目录: 从它的目录来说,还是很简单的: bin存放的是脚本文件 conf存放的是基本配置文件 data存放的是日志文件 docs存放的是说明文档 examples存放的是简单的实例 lib存放的是activemq所…
Dissecting Message Queues 概述: 我花了一些时间解剖各种库执行分布式消息.在这个分析中,我看了几个不同的方面,包括API特性,易于部署和维护,以及性能质量..消息队列已经被分为两组:brokerless和brokered. brokerless消息队列是对等的,没有中间商参与信息的传递,而brokered队列有一些服务器端点之间. 性能分析的一些系统: Brokerless nanomsg ZeroMQ Brokered ActiveMQ NATS Kafka Kest…
前言 ActiveMQ他是Apache出品的一个JMS提供者,管理会话和队列,运行在JVM下,支持多种语言,如JAVA,C++,C#,应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP,是一个消息的接受和转发的容器,可用于消息推送: 最近因为有项目支付场景用到这个,所以就临时看了下资料,粗糙的写了的笔记 配置ActiveMq 1.下载ActiveMQ 官网网站:http://activemq.apache.org/ 目前版本是Apache Ac…
简单尝试了node下的ActiveMQ 1.下载apache-activemq-5.9.0,执行bat文件: 2.登录http://localhost:8161/admin可查看其管理后台: 3.安装stomp客户端 npm install stomp-client 4.修改基础代码如下: var Stomp = require('stomp-client'); var readline = require('readline');//创建两个不同的topic var topic1 = '/to…
转载:http://blog.csdn.net/lifetragedy/article/details/51869032 ActiveMQ的集群 内嵌代理所引发的问题: 消息过载 管理混乱 如何解决这些问题--集群的两种方式: Master slave Broker clusters ActiveMQ的集群有两种方式: MASTER/SLAVE模式 Cluster模式 Pure Master Slave   Pure master slave的工作方式: 当master broker失效的时候.…
JMS的全称是Java Message Service,即Java消息服务.它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息.把它应用到实际的业务需求中的话我们可以在特定的时候利用生产者生成一消息,并进行发送,对应的消费者在接收到对应的消息后去完成对应的业务逻辑.对于消息的传递有两种类型,一种是点对点的,即一个生产者和一个消费者一一对应:另一种是发布/订阅模式,即一个生产者产生消息并进行发送后,可以由多个消费者进行接收. 整合activeMQ到springmv…
这里就不说怎么安装了,直接解压出来就行了. 谢绝转载,作者保留所有权力 目录:  一:JMQ的两种消息模式 1.1:点对点的消息模式 1.2:订阅模式 二:点对点的实现代码 2.1:点对点的发送端 2.2:点对点的接收端 三:订阅/发布模式的实现代码 3.1:订阅模式的发送端 3.2:订阅模式的接收端 四:发送消息的数据类型 4.1:传递javabean对象 4.2:发送文件 五:ActiveMQ的应用 5.1:保证消息的成功处理 5.2:避免消息队列的并发 5.2.1:主动接收队列消息 5.2…
你家小区下面有没有快递柜 近两年来,我们收取快递的方式好像变了,变得我们其实并不需要见到快递小哥也能拿到自己的快递了.对,我说的就是类似快递柜.菜鸟驿站这类的代收点的出现,把我们原来快递小哥必须拿着快递让你签收的形式,变为了你下班后去指定地方输入验证码取出你的快递就行了,再也不用麻烦保安大哥或者寄到公司后再带回家去,这个改变你不感觉大大方便了我们这些剁手党么?并且如果你买的是什么见不得人的东西,如什么情趣.什么娃娃的也并不那么尴尬了. 更神奇的是,去年有段时间我们公司的早餐都是有早餐柜子的,你提…
MessageQueue是分布式的系统里经常要用到的组件,一般来说,当需要把消息跨网段.跨集群的分发出去,就可以用这个.一些典型的示例就是: 1.集群A中的消息需要发送给多个机器共享: 2.集群A中消息需要主动推送,但彼此的网络不是互通的(如集群A只有过HA才能被外界访问): 当然上面的几个点,除了用MQ还有其它实现方式,但是MQ无疑是非常适合用来做这些事的.众多MQ中,ActiveMQ是比较有名气也很稳定的,它发送消息的成本非常廉价,支持Queue与Topic两种消息机制.本文主要就是讲如何在…
一.ActiveMQ 首先,ActiveMQ不是一个框架,它不是struct,webx,netty这种框架,它更像是tomcat服务器,因为你使用它之前必须启动它,activeMQ和JMS的关系有点类似于tomcat和servlet的关系,tomcat实现了servlet规范,同理activeMQ实现了JMS规范,它们都是服务器,在使用其服务之前需要先把服务器启动起来. //#准备activeMQ的环境和tomcat的环境一样简单. //1.下载:wget http://apache.freel…