基于定义时间的JMS中的消息调度/消耗

时间:2013-07-12 05:45:11

标签: jms ibm-mq mdp

我们将IBM WebSphere MQ用作Spring MDP(消息驱动POJO)的JMS提供程序。

在JMS中是否有任何方法可以在消息中配置与时间相关的属性,以便消息只能在特定的时间消耗?

例如,如果我将三条消息发送到队列M1,M2和M3。哪里,我可以配置M2消息属性让我们说凌晨3点。而消费者方面,消费者只能选择此消息@ 3 AM。如果未定义时间,则应以JMS Receiver的方式使用消息。

2 个答案:

答案 0 :(得分:1)

JMS 2.0规范定义了Delivery Delay。使用此功能,消息生产者可以指定在指定时间interval之后才能传递消息。该消息将在指定时间后发送。但是,这可能对您没有帮助,因为您希望在指定时间使用消息。通常,消息传递应用程序设计为在消息传递提供程序提供消息后立即使用消息。

答案 1 :(得分:1)

如果您只想在指定时间处理邮件,您可以创建另一个队列“queue_3am”,并安排读者准确地在凌晨3点运行。

变体是将时间戳设置为消息属性。因此,一个队列可以包含要在不同时间点处理的消​​息。读者可以使用消息选择器来获取相关消息。

但是你应该通过添加两个时间戳作为消息属性来使用“消息提取时间帧”,因为eaxmple将窗口设置为1或5分钟。

接收方可以使用消息选择器:选择器是使用消息属性的条件。

查看this