当前位置: 首页 > 知识库问答 >
问题:

具有不同消息选择器的持久订户

令狐凌
2023-03-14

我想知道这里是否有人能为我澄清以下问题。

假设我有一个主题,有5个持久订阅者。每个订户都是通过以下呼叫创建的(每个订户的名称明显不同):

session.createDurableSubscriber( 
   (Topic) destination, 
   "NAME_n", // Unique for every subscriber
   "PARTY_ID = '123'", // Message selector
   true );

因此,当我发布PARTY_ID = “123”的消息时,它将保留在主题中,直到所有5个持久订阅者都获得副本,对吗?

现在,假设我们有另外3个持久订阅者,消息选择器为“PARTY_ID='666'”。当我向主题发布“666”消息时,该消息会在3个持久“666”订阅者收到消息后从主题中删除,还是会一直保留到所有订阅者收到消息,在这种情况下,由于选择器限制,这将永远不会发生?

换句话说,主题上的消息保留是否考虑了消息和订阅者的消息选择器?

共有1个答案

郑晨
2023-03-14

发布消息时,消息传递提供程序会将该消息的副本放在与订阅者指定的选择条件匹配的所有订阅者。在您的情况下,消息的副本将发送给5个订阅者,因为它们与选择器“PARTY_ID = 123”匹配。然后,消息提供程序将丢弃消息。同样,对于选择器“PARTY_ID=666”,消息传递提供程序将仅将消息复制到匹配的订阅者,然后丢弃该消息。

请注意,消息传递提供者会将消息的副本放入分配给订阅者的存储区(通常是队列),并继续处理来自发布者的下一条消息。它不会等待订阅者使用队列中的消息。

消息保留保留发布是另一个概念,其中消息提供者将保留(或缓存)主题的发布,直到收到同一主题的下一个发布。下一个发布可能在下一秒或5分钟或5小时后发布。基本上,下一个发布的时间是不可预测的。当订阅者在发布完成后进入并且下一个发布是在一段时间后制作的时,这个概念非常有用。使用保留发布,保留发布的副本会立即传递给订阅者,这样订阅者就不必等待下一个发布很长时间。

假设出版商正在发布2014年国际足联荷兰队与西班牙队在主题FIFA2014/MATCHUPDATE/NED-ESP上的比赛成绩。每次进球后,出版商都会发布一条新消息。由于进球得分是不可预测的,消息发布时带有“保留发布”属性,该属性告诉消息提供者保留消息副本,直到下一条消息发布在FIFA2014/MATCHUPDATE/NED-ESP上。假设第一次发布时有两个订阅者,分数为0:0。现在假设第三个订阅器在第一次发布后进入,它将立即获得分数为0.0的发布。它不必等到下一个进球得分后才知道分数。请参阅此链接。

希望我是清楚的。

 类似资料:
  • 我正在使用网络逻辑10.3。我正在尝试配置一个持久订阅,其中包含由 jdbc 存储(在 Oracle DB 中)支持的持久消息。我有一个主题,MDB 正在作为持久订阅者侦听该主题。在场景-1下:如果我发送消息,它会命中MDB。 在场景2中:我挂起了MDB,希望发送到主题的消息只要不被MDB(它是唯一注册的持久订阅者)使用,就会一直存在。但是当我向主题发送消息时,它短暂地出现在那里,然后就消失了(我

  • 在我们的业务需求中,我们需要将更新传输到分布在全国各地的数千个客户端。问题是,许多这些客户端使用3G网络连接到我们,因此,发生了许多连接/断开连接...我们需要提供的更新是诸如“企业A不能再兑现”或“企业B能够再次兑现”之类的东西,我们正在考虑使用ActiveMQ持久主题来提供这些更新。我的理解是,一旦客户端连接到持久主题,即使他断开连接,每当他回来时,他都会在脱机时收到发送到该主题的消息。最大的

  • 我们开发的NMS产品已经被几家电信运营商部署。我们的应用程序(使用ActiveMQ)将向故障队列发布故障通知,消息被设置为持久性。这些消息由第三方JMS客户机使用。并不是所有的客户都有通知客户端来使用事件(有些部署没有任何订阅)。问题是,如果队列从来没有订阅服务器连接到队列,ActiveMQ是否会持久化消息?。

  • 问题内容: 在SQL中,将行复制到另一个(备份)表中。如果备份表具有不同的结构(或不同的列名称),这可能吗?如果没有,实现此目标的最佳方法是什么? 这是我想做的:具有columns 。我想将一些行从该表复制到另一个具有column的表。内容进入,对等 问题答案: 该 列名 不事可言,只要该 数据类型 相匹配。 如果列的数据类型不匹配,请尝试相应地强制转换值。 只需尝试 使用小的虚拟表。确保明确列出

  • “ActiveMQ中Blob消息传递的持久性”? "我们不能使用数据库(KahaDB)来Blob消息URL吗?" “我们可以像在远程activemq服务器中一样在嵌入式代理中创建文件服务器吗?”

  • 我刚刚开始使用activemq,我有一个关于追溯消费者的问题,为了启用此功能,您需要有一个持久的订阅。但是,在主题上启用和不启用追溯的持久订阅有什么区别?活跃的mq文档说。 http://activemq.apache.org/retroactive-consumer.html 追溯性使用者只是一个普通的 JMS Topic 使用者,它指示在订阅开始时,每次尝试都应该用于返回时间并发送使用者可能错