Topic与Queue】的更多相关文章

Jms规范里的两种message传输方式Topic和Queue,两者的对比如下表():   Topic Queue 概要 Publish  Subscribe messaging 发布订阅消息 Point-to-Point  点对点 有无状态 topic数据默认不落地,是无状态的. Queue数据默认会在mq服务器上以文件形式保存,比如Active MQ一般保存在$AMQ_HOME\data\kr-store\data下面.也可以配置成DB存储. 完整性保障 并不保证publisher发布的每条…
在JMS(Java消息服务)中,Topic实现publish和subscribe语义.一条消息被publish时,它将发到所有感兴趣的订阅者,所以零到多个 subscriber(电脑词汇中解释为“用户“)将接收到消息的一个拷贝.但是在消息代理接收到消息时,只有激活订阅的subscriber能够获得消息的一个拷贝. JMS Queue执行load balancer语义.一条消息仅能被一个consumer收到.如果在message发送的时候没有可用的consumer,那么它将被保存一直到能处理该me…
实战一 , 实战二 介绍了ActiveMQ的基本概念和配置方式. 本篇将通过一个实例介绍使用spring发送,消费topic, queue类型消息的方法. 不懂topic和queue的google 之. 如图示, TOPIC和QUEUE分别代表一个topic和一个queue消息通道. TopicMessageProducer向topic发送消息, TopicConsumerA和TopicConsumerB则从topic消费消息. QueueMessageProducer向Queue发送消息, Q…
1.实现功能 希望使用一套API,实现两种模式下的消息发送和接收功能,方便业务程序调用 1.发送Topic 2.发送Queue 3.接收Topic 4.接收Queue 2.接口设计 根据功能设计公共调用接口 /** * 数据分发接口(用于发送.接收消息队列数据) * * @author eguid * */ public interface MsgDistributeInterface {   /** * 发送到主题 * * @param topicName -主题 * @param data…
总结自:https://blog.csdn.net/qq_21033663/article/details/52458305 队列(Queue)和主题(Topic)是JMS支持的两种消息传递模型: 1.点对点(point-to-point,简称PTP)Queue消息传递模型: 消息目的地的类型是队列,消息首先被传送至消息服务器端特定的队列中,然后从此对列中将消息传送至对此队列进行监听的某个消费者. 同一个队列可以关联多个消息生产者和消息消费者,但一条消息仅能传递给一个消息消费者. 如果多个消息消…
JMS中定义了两种消息模型:点对点(point to point, queue)和发布/订阅(publish/subscribe,topic).主要区别就是是否能重复消费. 点对点:Queue,不可重复消费 消息生产者生产消息发送到queue中,然后消息消费者从queue中取出并且消费消息. 消息被消费以后,queue中不再有存储,所以消息消费者不可能消费到已经被消费的消息.Queue支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费.其它的则不能消费此消息了.当消费者不存在时,消…
1    queue与topic的技术特点对比 对比项 Topic Queue 概要 Publish Subscribe messaging 发布订阅消息 Point-to-Point 点对点 有无状态 topic数据默认不落地,是无状态的. Queue数据默认会在mq服务器上以文件形式保存,比如Active MQ一般保存在$AMQ_HOME\data\kr-store\data下面.也可以配置成DB存储. 完整性保障 并不保证publisher发布的每条数据,Subscriber都能接受到.…
之前写过一篇文章讨论VirtualTopic,但觉得不够透彻,这里再根据实验结果进行一次横向对比破除模糊和选择困难症. 文章中核心对比要素是:消息副本和负载均衡 Queue的特点和优势 ActiveMQ中Queue适用于"一对一"场景,单条消息无副本,只会被一个消费者消费.如果单个队列同时有多个消费者连接,则消息会按照一定的顺序依次发送给不同消费者消费,例如10条消息发送给5个消费者,那么消费者(1,2,3,4,5)分别获得(2,1,3,2,2)条消息,这就实现了负载均衡. 所以Que…
历史: Message Queue的需求由来已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司的产品,当时的Message queuing软件叫做:the information bus(TIB). TIB被电信和通讯公司采用,路透社收购了Teknekron公司.之后,IBM开发了MQSeries,微软开发了Microsoft Message Queue(MSMQ).这些商业MQ供应商的问题是厂商锁定,价格高昂.2001年,Java Message queuing试图解决锁定和…
前面我们介绍了通过使用direct exchage,改善了fanout exchange只能进行虚拟广播的方式.尽管如此,直接交换也有自身的局限,它不能基于多个条件路由. 在我们的日志系统中,也许我们希望不仅要根据严重程度,而且要基于发送日志的源订阅日志.为了实现这个功能,我们需要学习更复杂的主题交换(topic exchange). 主题交换(Topic exchange) 发送到主题交换机的消息不能随意设置路由键.它必须是由点分隔的一系列标识符.理论上可以是任何词,但最好见名知义,例如:"s…
上一节中使用了消息路由,消费者可以选择性的接收消息. 但是这样还是不够灵活. 比如某个消费者要订阅娱乐新闻消息 . 包括新浪.网易.腾讯的娱乐新闻.那么消费者就需要绑定三次,分别绑定这三个网站的消息类型. 如果新闻门户更多了,那么消费者将要绑定个更多的消息类型, 其实消费者只是需要订阅娱乐新闻,不管是哪个网站的新闻,都需要. 那么在rabbitMQ中可以使用topic类型. 模糊匹配消息类型. 模糊匹配中的 *代表一个  #代表零个或多个 示例: package com.zf.rabbitmq0…
回到目录 关于持久化到Redis的消息格式,主要是说在Broker上把消息持久化的过程中,需要存储哪些类型的消息,因为我们的消息是分topic的,而每个topic又有若干个queue组成,而我们的topic和queue由于redis存储结构的原因,我们需要将它们分区对应存储一下,而不能像关系型数据库那样灵活,所以要额外设计几个数据结构来存储它们. 一 Topic字典 二 Topic对应的Queue字典 三 Queue里的消息 四 某个客户端对应某个Queue的消费进度 以上四个结构是我们要说的,…
前言 最近花了我几个月的业余时间,对EQueue做了一个重大的改造,消息持久化采用本地写文件的方式.到现在为止,总算完成了,所以第一时间写文章分享给大家这段时间我所积累的一些成果. EQueue开源地址:https://github.com/tangxuehua/equeue EQueue相关文档:http://www.cnblogs.com/netfocus/category/598000.html EQueue Nuget地址:http://www.nuget.org/packages/eq…
要持久化的关键数据有三种 消息: 队列,队列中存放的是消息索引信息,即消息在文件中的物理位置(messageOffset)和在队列中的逻辑位置(queueOffset)的映射信息: 队列消费进度,表示当前队列中的消息消费到第几个了: 发送消息的设计 producer将消息的二进制数据发送到broker: broker做的事情: 单线程持久化消息到内存映射文件: 将当前消息的索引信息放入缓冲区,可以使用disruptor的ringbuffer实现,单线程写,无锁. 单线程从缓冲区读取消息索引信息,…
前面我们已经搭建和配置好了ActiveMQ,下面来看一个Demo,体验一下MQ. JMS 消息模型 JMS消息服务应用程序结构支持两种模型:点对点模型,发布者/订阅者模型. (1)点对点模型(Queue) 一个生产者向一个特定的队列发布消息,一个消费者从这个队列中依次读取消息. 模型特点:只有一个消费者获得消息. (2)发布者/订阅者模型(Topic) 0个或多个订阅者可以接受特定主题的消息. 模型特点:多个消费者可获得消息. Topic和Queue的最大区别在于Topic是以广播的形式,通知所…
上一篇,讲了RabbitMQ的具体用法,可以看看这篇文章:RabbitMQ学习系列(三): C# 如何使用 RabbitMQ.今天说些理论的东西,Exchange 的几种模式. AMQP协议中的核心思想就是生产者和消费者隔离,生产者从不直接将消息发送给队列.生产者通常不知道是否一个消息会被发送到队列中,只是将消息发送到一个交换机.先由Exchange来接收,然后Exchange按照特定的策略转发到Queue进行存储.同理,消费者也是如此.Exchange 就类似于一个交换机,转发各个消息分发到相…
很早前就仓促的接触过activemq,但当时太赶时间.后面发现activemq 需要了解的东西实在是太多了. 关于activemq 一直想起一遍文章.但也一直缺少自己的见解.或许是网上这些文章太多了.也可能是自己知识还不足够. 0,activemq-cpp 能解决什么问题. 实际应用就是让开发者能从多线程,多消息通信中解救出来.更多的关注应用逻辑. CMS (stands for C++ Messaging Service) is a JMS-like API for C++ for inter…
前言 本文可能对大多数不太了解ENode的朋友来说,理解起来比较费劲,这篇文章主要讲思路,而不是一上来就讲结果.我写文章,总是希望能把自己的思考过程尽量能表达出来,能让大家知道每一个设计背后的思考的东西.我觉得,任何设计的结果可能看起来很高大上,一张图即可,但背后的思考,才是更有价值的东西. 本篇文章想写一下ENode如何处理由于业务需求的变化而导致的模型重构的问题.DDD之所以能解决复杂的业务问题是因为DDD是一种模型驱动的软件设计方法.用领域模型来捕获业务需求,根据业务需求,抽象出满足需求的…
1.RabbitMQ NUget .Net客户端4.1.1版本 对应的 .netframework版本是 4.5.1 以及以上 2.本地实现的效果图 3.实践代码: P-生产者: using RabbitMQ.Client; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace RabbitMQCli…
概述 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议.AMQP(高级消息队列协议) 是一个异步消息传递所使用的应用层协议规范,作为线路层协议,而不是API(例如JMS),AMQP 客户端能够无视消息的来源任意发送和接受信息.AMQP的原始用途只是为金融界提供一个可以彼此协作的消息协议,而现在的目标则是为通用消息队列架构提供通用…
前言 本文想介绍一下前段时间在写enode时,顺便实现的一个分布式消息队列equeue.这个消息队列的思想不是我想出来的,而是通过学习阿里的rocketmq后,自己用c#实现了一个轻量级的简单版本.一方面可以通过写这个队列让自己更深入的掌握消息队列的一些常见问题:另一方面也可以用来和enode集成,为enode中的command和domain event的消息传递提供支持.目前在.net平台,比较好用的消息队列,最常见的是微软的MSMQ了吧,还有像rabbitmq也有.net的client端.这…
前言 之前写了一篇文章,总体介绍了EQueue.在看这篇文章之前如果还没看过那篇文章,可能会看不懂这篇文章.所以建议没看过的朋友务必先看一下那篇文章中所提到的各种概念,这样才能更好的理解本文所说的内容.说实话我当初写EQueue也是抱着一种玩的态度的,就是想尝试写一个分布式消息队列,用来为ENode提供分布式消息通信的能力.后来写着写着,发现越来越好玩,因为觉得这个队列以后应该会很实用,所以就花了更多的时间去设计它,完善它.希望它最终能被更多的人使用.到目前为止,我觉得目前基本实现了以下特性:轻…
前言 ENode是一个基于消息的架构,使用ENode开发的系统,每个环节都是处理消息,处理完后产生新的消息.本篇文章我想详细分析一下ENode框架内部是如何实现整个消息处理流程的.为了更好的理解我后面的流程的描述,我觉得还是应该先把ENode的架构图贴出来,好让大家在看后面的分析时,可以对照这个架构图进行思考和理解. ENode架构图 ENode框架内部实现流程分析 Controller发送ICommand到消息队列(EQueue): [从这一步开始处理Command]ENode.EQueue中…
一.RocketMQ简介: RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: 1.支持严格的消息顺序: 2.支持Topic与Queue两种模式: 3.亿级消息堆积能力: 4.比较友好的分布式特性: 5.同时支持Push与Pull方式消费消息: 官网链接: rocketmq下载地址: https://github.com/alibaba/RocketMQ/releases rocketmq github:   https://github.com/alibaba/RocketMQ…
Apache ActiveMQ是Apache软件基金会所研发的开放源码消息中间件:由于ActiveMQ是一个纯Jave程式,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行. 1.queue与topic的两种消息模式特点对比   Topic Queue 概要 Publish Subscribe messaging 发布订阅消息 Point-to-Point 点对点 有无状态 topic数据默认不落地,是无状态的. Queue数据默认会在mq服务器上以文件形式保存,比如Active…
前言: kafka是linkedin开源的消息队列, 淘宝的metaq就是基于kafka而研发. 而消息队列作为一个分布式组件, 在服务解耦/异步化, 扮演非常重要的角色. 本系列主要研究kafka的思想和使用, 本文主要讲解kafka的一些基本概念和api的使用. *) 准备工作1) 配置maven依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.9.2</…
转载自: http://my.oschina.net/geecoodeer/blog/194829 本文没有特意区分它们之间的区别,仅仅是列出其中笔者认为好的设计思想,供后续设计参考. 目前笔者并没有深入代码研究其细节,如有不正确的地方,请斧正. 概念和术语 消息,全称为Message,是指在生产者.服务端和消费者之间传输数据. 消息代理:全称为Message Broker,通俗来讲就是指该MQ的服务端或者说服务器. 消息生产者:全称为Message Producer,负责产生消息并发送消息到m…
MDB 整体结构 HelloMDB.java package cn.zno; import javax.jms.Connection; import javax.jms.ConnectionFactory; import javax.jms.DeliveryMode; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.Message…
安装环境:Activemq5.11.1, jdk1.7(activemq5.11.1版本需要jdk升级到1.7),虚拟机: 192.168.147.131 [root@localhost software]# pwd /export/software [root@localhost software]# -bin.tar.gz [root@localhost software]# /usr/local 配置Nginx代理Activemq后台管理应用默认绑定的8161端口 upstream tom…
一.前言 从本文起依次详细介绍JMS中的一些重要的概念,主要参考了官方的JMS1.1的文档,该文档很老了,是02年的,那年,JAVA还没有被Oracle收购..本文主要介绍Message及其相关概念,由于官方文档讲解得很详细,所以这个也基本上就是照搬了,只是由于时间关系,不能完全翻译了,所以本文只说重点. 二.Message的组成 上一次面试的时候,面试官问过我这个问题,但当时完全是一头雾水,用过ActiveMQ好几次了,但每次都是下个软件,起个服务,然后就在网上找一段模板代码配置好,能收到消息…