如何使用Stomp延迟activemq消息(AMQ_SCHEDULED_DELAY)

时间:2015-05-05 22:41:37

标签: node.js activemq stomp

我正在使用节点js stompit库(https://github.com/gdaws/node-stomp)在stomp上发送来自activemq的接收消息。

问题: - 有一种情况我希望在n分钟后安排发送消息。我没有看到任何方法可以使用此库(或任何其他nodejs库)设置此AMQ_SCHEDULED_DELAY标头

是否有人使用这些邮件属性进行日程安排。

1 个答案:

答案 0 :(得分:1)

预定的消息值直接映射到同名的字符串值,因此AMQ_SCHEDULED_DELAY常量映射到" AMQ_SCHEDULED_DELAY"在消息属性中。这意味着在STOMP中安排消息很简单。

以下是ActiveMQ的样本单元测试。

    @Test
public void testSendMessageWithDelay() throws Exception {

    MessageConsumer consumer = session.createConsumer(queue);

    String frame = "CONNECT\n" + "login:system\n" + "passcode:manager\n\n" + Stomp.NULL;
    stompConnection.sendFrame(frame);

    frame = stompConnection.receiveFrame();
    assertTrue(frame.startsWith("CONNECTED"));

    frame = "SEND\n" + "AMQ_SCHEDULED_DELAY:2000\n"  + "destination:/queue/" + getQueueName() + "\n\n" + "Hello World" + Stomp.NULL;

    stompConnection.sendFrame(frame);

    TextMessage message = (TextMessage)consumer.receive(1000);
    assertNull(message);
    message = (TextMessage)consumer.receive(2500);
    assertNotNull(message);
}