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



我是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);
}

在队列中,消息越来越高,所以我又添加了一个消费者。现在消费者是2。若消息较大,则在两个part()中接收到单个消息给不同的消费者。如何使消息完整。

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

您希望使用消息组来完成此操作。对于多个使用者来说,这可能有点棘手,并且需要生产者进行更多的耦合,因为它必须能够设置适当的头。

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

同样值得一读的是,我在上面链接的页面底部关于选择器的链接,可以帮助您选择最佳方法。

最新更新