JMS消息消耗

时间:2011-05-17 14:18:41

标签: jms activemq producer-consumer

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

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

假设ActiveMQ用作JMS提供程序(AMQ)

消息使用者(L)将是绑定到该主题的侦听器。 主题名称:jmsTopic

情景1:

AMQ正在运行,L未连接到AMQ中的jmsTopic。 P将M1发送到M7到jmsTopic。如果L在时间上连接到jmsTopic,例如T8大于T7,它将接收消息M1至M7,还是仅接收在时间T8之后发送给主题的消息。

场景2: AMQ正在运行,L连接并且正在监听jmsTopic,P将M1发送到M4。 L接收M1到M4。同时L处理M1到M4,P将M5发送到M7,但是在处理M4期间L崩溃。如果L再次将自己连接到jmsTopic,它是否接收M5到M7,或者只有L连接到jmsTopic后发送的消息才会被L接收。

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

1 个答案:

答案 0 :(得分: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崩溃;   知道AMQ状态和   AMQ启动并运行后重新连接。

设置AMQ以保证交付;所有邮件都将被序列化,以保证收到邮件。