我使用多个消费者时同步接收消息

时间:2014-11-06 06:52:58

标签: java jms activemq

我是Active MQ的新手。我的队列中有单个消费者。我正在同步读取消息,并且每个消息的最后一个都是唯一的字符串。有些消息很大,所以消费者通过两个部分接收这些消息并通过唯一字符串,消费者制作完整的消息。

StringBuilder snapshotUpdateString = new StringBuilder("");
while(true) {
    Message messageData = consumer.receive();
    TextMessage textMessage = (TextMessage) messageData;
    String receivedMessage=textMessage.getText();

    if (receivedMessage.contains("" + (char) PushPortContants.EOF)) {
        snapshotUpdateString.append(receivedMessage);
        String snapshot = snapshotUpdateString.substring(1, snapshotUpdateString.length() - 1);
        parseSaveSsUpdateData.parseAndSave(snapshot);
        snapshotUpdateString = new StringBuilder("");
    }
    else snapshotUpdateString.append(receivedMessage);
}

在队列中,消息越来越高,所以我再添加一个消费者。现在消费者是两个。 如果消息很大,则在两个part()中向不同的消费者接收单个消息。如何使消息完成消息。

在多个消费者中,我使用了听众。当我使用多个消费者时,我可以同步接收消息吗?

1 个答案:

答案 0 :(得分:2)

您想使用Message Groups。这对于多个消费者来说可能有点棘手,并且需要生产者更多的耦合,因为它必须能够设置适当的头。

在任何情况下,生产者都需要标记JMSXGroupId和JMSXGroupSeq以指示特定组的消息和顺序。

我也可以阅读上面关于选择器的the link at the bottom of the page来帮助您选择最佳方法。