Activemq 虚拟主题/队列和持久性
当没有消费者收听时,发布到虚拟主题的消息会发生什么情况?在订户有空之前,经纪人会持有它们一段时间吗 更具体地说:Activemq 虚拟主题/队列和持久性,activemq,Activemq,当没有消费者收听时,发布到虚拟主题的消息会发生什么情况?在订户有空之前,经纪人会持有它们一段时间吗 更具体地说: 在T0和T1,发布消息M0和M1。在T2处,耗电元件C1连接,他会接收M0和M1吗?显然,在T3和T4发布的消息M2和M3将由C1接收,但在T5连接的新消费者C2将接收什么?所有消息,M2和M3,还是无消息 这取决于主题的性质: 如果主题是持久的(有持久的使用者订阅它),代理将保留主题中的消息,直到所有持久的使用者使用这些消息。 如果主题是非持久的(没有持久的使用者),则消息甚至不会
在T0和T1,发布消息M0和M1。在T2处,耗电元件C1连接,他会接收M0和M1吗?显然,在T3和T4发布的消息M2和M3将由C1接收,但在T5连接的新消费者C2将接收什么?所有消息,M2和M3,还是无消息 这取决于主题的性质: 如果主题是持久的(有持久的使用者订阅它),代理将保留主题中的消息,直到所有持久的使用者使用这些消息。 如果主题是非持久的(没有持久的使用者),则消息甚至不会发送到该主题,因为没有持久订阅
对于您的示例,我将考虑使用持久订阅/消费者: 案例1:
- T-2 C1和C2对主题进行持久订阅
- T-1 C1和C2断开
- T0:M0已发布
- T1:M1已发布
- T2:C1连接C1接收M0和M1
- T3:M3已发布C1接收M3
- T4:M4已发布C1接收M4
- T5:C2连接,C2接收M0、M1、M2、M3、M4
- T-2 C1和C2正常订阅该主题
- T-1 C1和C2断开
- T0:M0已发布
- T1:M1已发布
- T2:C1连接C1没有收到任何信息
- T3:M3已发布C1接收M3
- T4:M4已发布C1接收M4
- T5:C2连接,C2不接收任何内容
发布M0时,C1和C2(订阅的消费者)被唤醒,可以使用事件?我认为这种模式比持久性和非持久性更好——一种混合的方法。有两种方法可以让发布到虚拟主题的消息存活。第一种是通过持久订阅者,另一种是发布者以“持久”的传递模式发送消息。当以“持久”的传递模式发布邮件时,邮件将保存在磁盘上,否则将保存在内存中。我将不得不问,到目前为止您尝试了什么?还没有时间尝试,可以。目前对我来说只是一个理论问题,但我需要知道