我是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()
中向不同的消费者接收单个消息。如何使消息完成消息。
在多个消费者中,我使用了听众。当我使用多个消费者时,我可以同步接收消息吗?
答案 0 :(得分:2)
您想使用Message Groups。这对于多个消费者来说可能有点棘手,并且需要生产者更多的耦合,因为它必须能够设置适当的头。
在任何情况下,生产者都需要标记JMSXGroupId和JMSXGroupSeq以指示特定组的消息和顺序。
我也可以阅读上面关于选择器的the link at the bottom of the page来帮助您选择最佳方法。