JSM的topic和queue的区别

JMS(Java消息服务)中,Topic实现publish和subscribe语义。一条消息被publish时,它将发到所有感兴趣的订阅者,所以零到多个 subscriber(电脑词汇中解释为“用户“)将接收到消息的一个拷贝。但是在消息代理接收到消息时,只有激活订阅的subscriber能够获得消息的一个拷贝。

JMS Queue执行load balancer语义。一条消息仅能被一个consumer收到。如果在message发送的时候没有可用的consumer,那么它将被保存一直到能处理该message的consumer可用。如果一个consumer收到一条message后却不响应它,那么这条消息将被转到另一个consumer 那儿。一个Queue可以有很多consumer,并且在多个可用的consumer中负载均衡

Jms规范里的两种message传输方式Topic和Queue,两者的对比如下表():

确认消息的方式有如下三种

AUTO_ACKNOWLEDGE(自动通知)

CLIENT_ACKNOWLEDGE(客户端自行决定通知时机)

DUPS_OK_ACKNOWLEDGE(延时//批量通知)

如果使用的是 客户端自行决定通知时机方式,那么需要在MessageListener显式调用message.acknowledge()来通知服务器。服务器接收到通知后采取相应的操作。

6
时间: 2024-10-12 16:02:46

JSM的topic和queue的区别的相关文章

MQ-传输方式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发布的每条

ActiveMQ5.0实战三:使用Spring发送,消费topic和queue消息

实战一 , 实战二 介绍了ActiveMQ的基本概念和配置方式. 本篇将通过一个实例介绍使用spring发送,消费topic, queue类型消息的方法. 不懂topic和queue的google 之. 如图示, TOPIC和QUEUE分别代表一个topic和一个queue消息通道. TopicMessageProducer向topic发送消息, TopicConsumerA和TopicConsumerB则从topic消费消息. QueueMessageProducer向Queue发送消息, Q

Windows Azure Service Bus (4) Service Bus Queue和Storage Queue的区别

<Windows Azure Platform 系列文章目录> 熟悉笔者文章的读者都了解,Azure提供两种不同方式的Queue消息队列: 1.Azure Storage Queue 具体可以参考:       Windows Azure Cloud Service (12) PaaS之Web Role, Worker Role, Azure Storage Queue(下) Azure Storage Queue提供基础的消息队列服务,例如AddMessage, DeleteMessage.

nsq topic和channel的区别

topic:一个可供订阅的话题.channel:属于topic的下一级,一个topic可以有多个channel.二者关系可以再参考下面两文章:http://www.cnblogs.com/forrestsun/p/3892710.htmlhttp://www.linuxeden.com/html/news/20140301/148960.html 举个例子:topic:比做一个广播,如交通广播.打开收音机,你可以换很多频率,如果换到91.6MHZ,你就会听到交通广播,(我们这里交通广播是91.6

ActiveMQ 消息服务(三)

想象场景: 有一条任务,需要在特定环境下进行.用ActiveMQ 来讲分两步,第一:发送者发布一条消息:第二:接收者接收到这条消息后需要干某些事情. 本文依然直接贴出demo代码! 1.项目结构图: 2.activeMQ的jar包依赖,部分pom.xml文件代码: <dependencies> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-core

HornetQ Topic/Queue for Clojure

1. HornetQ 概述 HornetQ是一个支持集群和多种协议,可嵌入.高性能的异步消息系统.HornetQ完全支持JMS,HornetQ不但支持JMS1.1 API同时也定义属于自己的消息API,这可以最大限度的提升HornetQ的性能和灵活性.在不久的将来更多的协议将被HornetQ支持. 2. HornetQ 特点 (1)HornetQ拥有超高的性能,HornetQ在持久化消息方面的性能可以轻易的超于其它常见的非持久化消息引擎的性能.当然,HornetQ的非持久化消息的性能会表现的更好

Python之queue模块

一.queue——同步的队列类 queue模块实现了多生产者,多消费者的队列.当 要求信息必须在多线程间安全交换,这个模块在 线程编程时非常有用 .Queue模块实现了所有要求的锁机制.  说了半天就是Queue模块主要是多线程,保证线程安全使用的. 这个类实现了三种类型的queue,区别仅仅在于进去和取出的位置.在一个FIFO(First In,First Out)队列中,先加先取.在一个LIFO(Last In First Out)的队列中,最后加的先出来(操作起来跟stack一样).pri

Python的multiprocessing,Queue,Process

在多线程multiprocessing模块中,有两个类,Queue(队列)和Process(进程): 在Queue.py中也有一个Queue类,这两个Queue的区别? from multiprocessing import Queue,Process引入multiprocessing模块中的队列和进程类 队列Queue: Queue是python中的标准库,可以直接import引用在队列中:Queue.Queue(maxsize)创建队列对象,如果不提供maxsize,则队列数无限制. # _

Message Queue协议AMQP

历史: Message Queue的需求由来已久,80年代最早在金融交易中,高盛等公司采用Teknekron公司的产品,当时的Message queuing软件叫做:the information bus(TIB). TIB被电信和通讯公司采用,路透社收购了Teknekron公司.之后,IBM开发了MQSeries,微软开发了Microsoft Message Queue(MSMQ).这些商业MQ供应商的问题是厂商锁定,价格高昂.2001年,Java Message queuing试图解决锁定和