首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JMS持久订阅。订阅者未收到消息

JMS持久订阅是Java消息服务(Java Message Service,JMS)中的一种消息订阅模式。在JMS中,消息发布者(生产者)可以将消息发送到一个主题(Topic),而订阅者(消费者)可以选择以持久或非持久的方式订阅该主题。

持久订阅是指订阅者在订阅主题后,即使订阅者当前不在线或者未连接到消息代理(消息中间件),也能够接收到发布者发送的消息。当订阅者重新连接到消息代理时,它会接收到之前未接收的消息。这种方式适用于需要确保消息不会丢失的场景,例如重要的通知、实时数据更新等。

JMS持久订阅的优势包括:

  1. 可靠性:持久订阅确保即使订阅者离线,也能够接收到所有的消息,避免消息丢失。
  2. 灵活性:订阅者可以根据自己的需求选择以持久或非持久的方式订阅主题,根据实际情况进行调整。
  3. 实时性:持久订阅可以保证订阅者在重新连接后立即接收到未接收的消息,实现实时数据更新。

在腾讯云的消息队列产品中,可以使用CMQ(消息队列)来实现JMS持久订阅。CMQ是一种高可靠、高可用的消息队列服务,支持持久订阅模式,可以满足各种消息通信场景的需求。

腾讯云CMQ产品介绍链接地址:https://cloud.tencent.com/product/cmq

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring认证指南-了解如何使用 JMS 代理发布和订阅消息

原标题:Spring认证指南-了解如何使用 JMS 代理发布和订阅消息 使用 JMS 进行消息传递 本指南将引导您完成使用 JMS 代理发布和订阅消息的过程。...你将建造什么 您将构建一个应用程序,该应用程序使用 SpringJmsTemplate发布单个消息并@JmsListener使用托管 bean 的注释方法订阅它。...创建消息接收器 Spring 提供了将消息发布到任何 POJO(Plain Old Java Object)的方法。 本指南介绍如何通过 JMS 消息代理发送消息。...当它运行时,隐藏在所有日志记录中,您应该会看到以下消息: 发送电子邮件。 收到 概括 恭喜!...您已经开发了基于 JMS消息的发布和使用

1K20

activemq学习之activemq功能(一)

订阅一个主题的消费只能消费自它订阅之后发布的消息JMS 规范允许客户创建持久订阅,这在一定程度上降低了时间上的相关性要求。...持久订阅允许消费消费它在处于激活状态时发送的消息 点对点: 如果session关闭时 有一些消息已经被收到 但没有被签收 消费下一次连接到相同队列时,这些消息仍然会被签收 可以消息过滤 如果是持久消息...消息会被持久化保存 直到消息被签收 发布订阅 持久订阅和非持久订阅持久订阅 不能回复或重新指标一个签收的消息 如果所有消息必须要签收 则使用持久订阅 消息结构组成 JMS 消息由及部分组成:...持久订阅就是这样一个道理,持久订阅有两个特点: 持久订阅和非持久订阅针对的 Domain 是 Pub/Sub,而不是 P2P 当 Broker 发送消息订阅时,如果订阅处于 未激活状态状态:持久订阅可以收到消息...如 果 jms provider 挂掉了,那么这些送达的消息不会丢失;jms provider 恢复正常后,会重新读取这些消息, 并传送给对应的消费

1.1K20
  • ActiveMQ详解(3)——JMS消息的高级特性

    消息持久JMS支持两种消息提交模式: PERSISTENT:持久消息JMS Provider会将该类型的消息持久化,以保证消息不会因为Provider的故障而丢失。...持久订阅 要实现持久订阅,生产必须创建PERSISTENT的消息,然后消费可以通过createDurableSubscriber()方法创建持久订阅。...JMS Provider会存储发布到Topic上的持久订阅消息,如果最初创建持久订阅的消费或者其他任何消费,使用相同的ConnectionFactory和相同的客户端id,相同的主题和订阅名称,再次调用会话的...Pub/Sub模型的特点: 分为持久订阅和非持久订阅。非持久订阅时,消费无法接收到离线状态时发送过来的消息。...非持久订阅状态下,不能恢复或者重新创建一个签收的消息,只有持久订阅才可以。 如果需要保证所有订阅消息都被接收,则需要使用持久订阅。如果可以容忍消息的丢失,则可以使用非持久订阅

    65120

    ActiveMQ从入门到精通(二)消息的顺序消费JMS Selectors消息的同步 AND 异步 接受MessageP2P or PubSub持久订阅持久消息到MySQL与Spring整合J

    接上一篇《ActiveMQ从入门到精通(一)》,本篇主要讨论的话题是:消息的顺序消费、JMS Selectors、消息的同步/异步接受方式、Message、P2P/PubSub、持久订阅持久消息到...P2P 生产端发送一条消息,消费端只会有一个消费消费这个消息。好像打电话,一对一通信! ? Pub/Sub 一对多通信,发送一条消息,所有订阅了该目标的消费都会收到消息。...对于订阅模式,对订阅提出了特殊的要求,要想收到消息,必须先订阅,而且订阅进程必须一直处于运行状态!实际上,有时候消费重启了下,那么这个消费将丢失掉一些消息,那么能否避免这样的情况呢?...ActiveMQ已经替我们想好了,就是持久订阅! ---- 持久订阅 所谓持久订阅,打个比方,就是说跟MQ打声招呼,即便我不在,那么给我发送的消息暂存在MQ,等我来了,再给我发过来。...持久订阅机制 每一个持久订阅都应该有一个唯一的ID作为标示以及要在哪个Topic上进行持久订阅,一旦这些信息告知MQ之后,那么以后不论持久订阅在不在线,那么他的消息会暂存在MQ,以后都会发给他

    2.3K30

    深入浅出JMS(一)——JMS简单介绍

    在ClientA、C、D之间的消息是点对点模型,使用这样的模型,client发送消息到队列目的地(Queue),从这个队列里面仅仅有一个消息接收能够收到那个消息,其它訪问同一目的地的接收不会接收到消息...Ø 发送和接受消息与时间没有关系 也就是说,生产在发送消息后,消费能够在随意的时刻接收,但有两个前提: 1、消息过期 2、消息没有被其它的用户接收...Ø 消费必须确认对消息的接收 收到消息后消费必须确认消息已被接收,否则JMS服务提供会觉得该消息没有被接收,那么这条消息仍然能够被其它人接收。...Ø 非持久消息最多仅仅发送一次 非持久消息最多仅仅发送一次,表示消息有可能未被发送,造成未被发送的原因可能有: 1、 JMS服务提供出现宕机等情况,造成非持久信息的丢失...2、 队列中的消息过期,未被接收 Ø 持久消息严格发送一次 我们能够将比較重要的消息设置为持久化的消息持久化后的消息不会由于JMS服务提供的故障或者其它原因造成消息丢失

    74130

    消息队列——ActiveMQ使用及原理浅析

    基本功能 消息传递 P2P pub/sub 持久订阅 消息传递的可靠性 事务型会话与非事务型会话 持久化与非持久消息的存储策略 消息发送策略 三、原理浅析 发送原理 消费原理 消费消息流程 消息确认及消息重发...但是,若是消费中途怠机再恢复,怠机过程中产生的消息能否接收到呢?AcitveMQ是支持获取怠机过程中的消息的,即持久订阅工功能。 持久订阅 什么是持久订阅?...比如,发送10条消息,消费收到第5条消息时调用acknowledge方法,那么前5条都会被确认。...该模式可优化消费确认消息的性能,但可能会导致消费收到重复消息(这个参数在优化一节中还会详细讲解)。...这个配置主要用来约束异步发送时producer端允许积压(ack)的消息大小。

    3.7K21

    ActiveMQ专题2: 持久

    AMQ的持久化问题 前言 ​ 前面一篇AMQ专题中,我们发现对于Topic这种类型的消息,即使将deliveryMode设置为持久化,只要生产在消费之前启动。消息生产发布的消息还是会丢失。...这是符合JMS规范的。 当然,作为一个如此活跃的开源消息中间件,在实现JMS基本规范之后,必然会通过扩展的方式来实现Topic的持久订阅。...而支持持久化的设置,只要消息没有被消费,重启mq,仍然能被新加入的consumer消费。 订阅持久化 ​ JMS的规范是没有要求实现订阅持久化的。所幸的是activeMQ实现了这个特性。...个人认为所谓的订阅持久化相对于消息持久化,不过是一种伪持久化。...如果在发布持久订阅消息之前producer就向mq发送了topic消息,那么consumer还是没法接收 activeMQ确定是否是同一持久订阅的依据条件有两个:connection.setClientID

    68430

    flea-msg使用之JMS初识

    JMS 规范允许客户创建持久订阅,这在一定程度上放松了时间上的关联性要求。持久订阅允许消费消费它在处于激活状态时发送的消息。...如果一个客户端收到一个设置了 JMSRedelivered 属性的消息,则表示可能客户端曾经在早些时候收到过该消息,但并没有签收(acknowledged)。...2.5.3 持久订阅 我们可以使用会话对象创建主题的持久订阅。即使订阅处于非活跃状态,Broker 也会保留这些订阅消息。...虽然 发布/订阅 模型不需要有多个订阅,但图中列出了两个订阅,这就告诉我们该模型允许广播消息。主题的所有订阅都会获得发布到该主题的任何消息的副本。 订阅服务器可以是持久的或者非持久的。...Broker 将保留所有活跃订阅消息,但仅当这些订阅持久的,Broker 才会保留非活跃订阅的信息。 下面我们来看下更为复杂的场景,如下图所示。

    13421

    深入了解ActiveMQ!

    JMS规范允许客户创建持久订阅,这在一定程度上放松了时间上的相关性要求。持久订阅允许消费消费它在处于激活状态时发送的消息。...只有创建该临时目的地的连接上的消息消费才能够从临时目的地中提取消息。 「持久订阅」 首先消息生产必须使用PERSISTENT提交消息。...JMS Provider会存储发布到持久订阅对应的topic上的消息。...JMS Provider会向客户发送客户处于非激活状态时所发布的消息持久订阅在某个时刻只能有一个激活的订阅持久订阅在创建之后会一直保留,直到应用程序调用会话上的unsubscribe方法。...「activemq_acks」:用于存储订阅关系。如果是持久化Topic,订阅和服务器的订阅关系在这个表保存。

    98920

    一篇文章让你了解JMS以及中间件之ActiveMQ

    JMS DeliverMode 持久模式和非持久模式 一条持久性的消息:应该被传送"一次仅仅一次",这就意味着如果JMS提供出现故障,该消息并不会丢失,它会在服务器恢复之前再次传递 一条非持久消息...主题使得消息订阅消息发布保持互相独立,不需要接触即可保证消息的传送。 非持久持久订阅只有当客户端处于激活状态,也就是和MQ保持连接状态才能收到发送某个主题的消息。...如果消费处于离线状态,生产发送的主题将会丢失作废,消费永远不会收到 一句话:先要订阅注册才能接收到发布,只给订阅发布消息 持久 客户端首先向MQ注册一个自己的身份ID识别号,当客户端处于离线时,...生产会为这个ID保存所有发送到主题的消息, 当客户端再次连接到MQ时会根据消费的ID得到所有当自己处于离线时发送到主题的消息持久订阅状态下,不能恢复或重新派送一个签收的消息。...持久订阅才能恢复或重新派送一个签收的消息 JMS编码总体架构(类似JDBC编码) JavaEE Active MQ MQ中间件的落地产品有哪些?

    1.2K30

    ActiveMQ --- 入门篇

    点对点的目的地是queue,发布与订阅的目的地是topic,每条消息可以有多个消费;生产和消费有时间上的关联,订阅了某个topic,只能消费你订阅之后的消息,说简单就是,关注了你公众号的人,他不能收到在他关注你之前的消息...,消息将被丢弃 消息不会被丢弃 处理效率 随着订阅的增加效率会降低 由于一条消息只发给一个消费,所以消费再多也不会明显地影响性能 四、关于JMS 1、什么是JMS?...:消息消费 JMS message:消息 消息头 JMSDestination:目的地,queue和topic JMSDeliveryMode:分为持久和非持久模式。...持久模式意味着消息即使JMS提供出现故障,该消息并不会丢失,会在服务器恢复后再次发送;反之,非持久模式就是服务器出现故障,该消息将永久丢失。...小结:不能容忍丢失消息,就用持久订阅,可以容忍丢失消息,就用非持久订阅。 五、activeMQ的broker 1、什么是broker?

    1.1K20

    深入浅出JMS(一)--JMS基本概念

    涉及到的概念 主题(Topic) 发布(Publisher) 订阅(Subscriber) 客户端将消息发送到主题。多个发布消息发送到Topic,系统将这些消息传递给多个订阅。...针对某个主题(Topic)的订阅,它必须创建一个订阅之后,才能消费发布消息,而且为了消费消息订阅必须保持运行的状态。 为了缓和这样严格的时间相关性,JMS允许订阅创建一个可持久化的订阅。...这样,即使订阅没有被激活(运行),它也能接收到发布消息。...○ 同步 订阅或接收调用receive方法来接收消息,receive方法在能够接收到消息之前(或超时之前)将一直阻塞 ○ 异步 订阅或接收可以注册为一个消息监听器。...当然,也可以session的creatDurableSubscriber方法来创建持久化的订阅。 (7) MessageListener 消息监听器。

    68210

    深入讲解ActiveMQ5.X消息持久

    它允许我们在JMS领域使用发布订阅语义模型. 但当我们将一条消息标记为“持久的”而它并没有订阅时会如何?...如果消息没有任何的订阅(无活跃的或可持久订阅),那么当消息被发布后(持久或非持久的),ActiveMQ 对此消息不会做任何的事情....如果消息有可持久订阅(活跃或非活跃),那么ActiveMQ只是会存储这些消息....对于一个非活跃的可持久订阅, ActiveMQ 会将标记为“持久的”消息持久存储并等待订阅重新加入订阅,到那时它将会尝试投递消息....它取决于消费消息的处理和确认(这取决于消息的确认模式… 默认模式是自动确认,即当消费收到消息就会发送ACK..

    76450

    消息中间件MQ之ActiveMQ学习总结(中)

    才显示细节消息,相当于,并发,一对多,微信公众号,你在订阅之前的消息,是不被接收的,当你订阅后,我一个人发布消息到公众号,到服务器,订阅为多人,那么这些订阅都会收到消息。...JMS的组成结构:消息服务,可理解为Http请求,你发布消息,和发送请求,关注的除了消息本身,更多关注的是消息头,消息体,消息属性等; 角色分为消息的提供(Procvider)----MQ...服务器 生产( Producer)----发布消息客户端 消费(consumer...消息订阅 再发布 订阅后取关的再关注 历史消息还会推送 消息重复消费 消费事务为true 但是提交 session.commit()提交后,正常 MQ的持久化...说到持久化,第一个想起的就是redis的持久化特性,RDB,AOF ?

    56620

    消息中间件哪些事

    2、什么是消息模型 Point-to-Point(P2P) --- 点对点(生产发送一条消息到queue,只有一个消费收到) Publish/Subscribe(Pub/Sub)--- 发布订阅...(发布发送到topic的消息,只有订阅了topic的订阅才会收到消息) 即点对点和发布订阅模型 P2P(点对点) p2p模型图 ?...为了缓和这样严格的时间相关性,JMS允许订阅创建一个可持久化的订阅。这样,即使订阅没有被激活(运行),它也能接收到发布消息。...○ 同步 订阅或接收调用receive方法来接收消息,receive方法在能够接收到消息之前(或超时之前)将一直阻塞 ○ 异步 订阅或接收可以注册为一个消息监听器...发布订阅与点对点通讯方式区别: 点对点 只能保证一个消费进行消费 一对一 发布订阅 只要集群服务订阅该主题都会受收到消息 一对多 source:https://www.cnblogs.com

    1.1K20

    JMS中间件ActiveMQ详解

    允许多个接受,类似于广播的方式 生产消息发送到主题上(Topic) 接受必须先订阅 注:持久订阅:特殊的消费,告诉主题,我一直订阅着,即使网络断开,消息服务器也记住所有持久订阅,如果有新消息...,主要包括两种Queue、Topic两种 Subscription:消息的消费订阅 MessageStore:消息持久化存储,像比较复杂的Kaha存储机制就放在这 PendingMessageCursor...0或N个消息消费订阅(subscription) 5、每个目的地都有一个相应的持久化存储方式(messageStore),以及一个等待发送的消息分发指针(pendingMessageCursor)...5、6:该目的地首先根据需要进行持久化操作,并使用待发送消息指针对象 7、当有合适的消息消费订阅来到时,目的地会找到这些消费 8、9:通过该消费对应的TransportConnection,发给相应的消费进程...因为有时消费没有确认他已经收到消息或者JMS提供不确定消费是否已经收到。 3.JMSExpiration 允许消息过期, setTimeToLive()设置消息的有效期。

    1.6K20

    消息队列的两种模式(二) 转

    点对点与发布订阅最初是由JMS定义的。...2.2、发布订阅模式 发布发送到topic的消息,只有订阅了topic的订阅才会收到消息。...3、流行模型比较 传统企业型消息队列ActiveMQ遵循了JMS规范,实现了点对点和发布订阅模型,但其他流行的消息队列RabbitMQ、Kafka并没有遵循JMS规范。...RabbitMQ既支持内存队列也支持持久化队列,消费端为推模型,消费状态和订阅关系由服务端负责维护,消息消费完后立即删除,不保留历史消息。...3.2、Kafka Kafka只支持消息持久化,消费端为拉模型,消费状态和订阅关系由客户端端负责维护,消息消费完后不会立即删除,会保留历史消息。因此支持多订阅时,消息只会存储一份就可以了。

    45020

    【中间件】ActiveMQ的queue以及topic消息处理机制浅析

    Topic方式发送的消息与queue方式发送的消息,发送和接收的效率,在一个订阅和100个订阅的前提下没有明显差异,但在500个订阅并发的前提下,topic方式的效率明显低于queue。...Queue方式发送的消息,在一个订阅、100个订阅和500个订阅的前提下,发送和接收的效率没有明显变化。...Topic实测数据: 发送发送的消息总数 所有订阅收到消息的总数 消息发送和接收平均耗时 单订阅 100 100 101ms 100订阅 100 10000 103ms 500订阅 100...50000 14162ms Queue实测数据: 发送发送的消息总数 所有订阅收到消息的总数 消息发送和接收平均耗时 单订阅 100 100 96ms 100订阅 100 100 96ms...500订阅 100 100 100ms topic方式的消息处理示例 通过客户端代码调用来发送一个topic的消息: import javax.jms.Connection; import javax.jms.ConnectionFactory

    62550

    ActiveMQ详解(2)——JMS基本概念

    JMS Producer:消息生产,创建和发送JMS消息的客户端应用。 JMS Consumer:消息消费,接收和处理JMS消息的客户端应用。...JMS Domains:消息传递域。JMS中定义了两种消息传递域:点对点模式和发布订阅模式。...发布/订阅模式:简称Pub/Sub模式,特点如下: 每个消息可以被多个消费所消费; 生产和消费之间要有时间上的相关性,消费只有在订阅了一个主题之后,才能消费该主题下的消息。...JMS规范运行客户端创建持久订阅,这在一定程度上放松了时间相关性的要求。对于持久订阅,如果消息发布时消费端处于激活状态,也可以在消费端重新激活时重新开始消费。...一条持久化的消息应该被传递”一次且仅仅一次”,这意味着如果JMS Provider出现了故障,持久化的消息也不会丢失,会在Provider恢复后被重新消费。

    47310
    领券