JMS消息消费

问题描述 投票:0回答:1

我不确定以下场景中会发生什么,如果有人解释的话将会有很大帮助。

生产者(P)发送消息M1,M2,M3,M4,M5,M6,M7;假设它是从时间 T1 到 T7 发送的。

消息消费者(L)将是绑定到主题的监听者。 主题名称:jmsTopic

场景一:

JMS 代理正在运行,L 连接到 jmsTopic。 P将M1到M7发送到jmsTopic。如果 L 在时间 T8(大于 T7)连接到 jmsTopic,它会收到消息 M1 到 M7 还是仅收到时间 T8 之后发送到主题的消息。

场景2:

JMS 代理正在运行,Lis已连接并侦听 jmsTopic。 P 将 M1 发送到 M4。 L接收M1至M4。在L处理M1到M4的同时,P发送M5到M7,但是L在处理M4期间崩溃了。如果 L 再次将自身连接到 jmsTopic,它是否会接收 M5 到 M7,或者只有 L 连接到 jmsTopic 之后发送的消息才会被 L 接收。

场景3:

JMS代理正在运行,L已连接并监听jmsTopic,P将M1发送到M7。然而经纪人崩溃了; L 知道代理状态并在 AMQ 启动并运行后重新连接。

jms producer-consumer
1个回答
1
投票

场景 1:AMQ 正在运行,L 未运行 连接到 AMQ 中的 jmsTopic。 P 发送 M1 到 M7 到 jmsTopic。如果 L 是 连接到 jmsTopic 的时间为 T8 比T7还大吧 接收消息 M1 至 M7 或仅 发送到主题的消息 T8 时间之后。

队列的全部意义就是保证交付。在侦听器将消息从队列中取出之前,不会处理任何消息,因此在 T8 之前到达的所有消息都会在那里。

场景2:AMQ正在运行,L为 已连接并正在监听 jmsTopic, P 将 M1 发送到 M4。 L接收M1至M4。 同时L处理M1到M4, P 发送 M5 到 M7,但是 L 崩溃 在处理 M4 期间输出。如果L 再次将自身连接到 jmsTopic , 它接收 M5 至 M7 还是仅接收 L 之后发送的消息 连接到jmsTopic将被接收 由L.

与 #1 相同:所有消息 M5 及更新的消息都将被侦听器接收。

场景3:AMQ正在运行,L为 已连接并正在监听 jmsTopic, P 将 M1 发送到 M7。然而AMQ崩溃了; L 是否了解 AMQ 状态并且 AMQ 启动并运行后重新连接。

设置AMQ以保证交付;所有消息都将被序列化,以保证收到后送达。

© www.soinside.com 2019 - 2024. All rights reserved.