public Set<MessageQueue> fetchMessageQueues(String topic) { Set<MessageQueue> mqSet = new HashSet<>(); TopicConfig topicConfig = selectTopicConfig(topic); if (topicConfig != null && topicConfig.getReadQueueNums() > 0) { for (int i = 0; i < topicConfig.getReadQueueNums(); i++) { MessageQueue mq = new MessageQueue(); mq.setTopic(topic); mq.setBrokerName(brokerController.getBrokerConfig().getBrokerName()); mq.setQueueId(i); mqSet.add(mq); } } return mqSet; }
private List<MessageQueueForC> convertOffsetTable2OffsetList(Map<MessageQueue, Long> table) { List<MessageQueueForC> list = new ArrayList<>(); for (Entry<MessageQueue, Long> entry : table.entrySet()) { MessageQueue mq = entry.getKey(); MessageQueueForC tmp = new MessageQueueForC(mq.getTopic(), mq.getBrokerName(), mq.getQueueId(), entry.getValue()); list.add(tmp); } return list; }
private MessageQueue getOpQueueByHalf(MessageQueue halfMQ) { MessageQueue opQueue = new MessageQueue(); opQueue.setTopic(TransactionalMessageUtil.buildOpTopic()); opQueue.setBrokerName(halfMQ.getBrokerName()); opQueue.setQueueId(halfMQ.getQueueId()); return opQueue; }
private MessageQueue getOpQueue(MessageQueue messageQueue) { MessageQueue opQueue = opQueueMap.get(messageQueue); if (opQueue == null) { opQueue = new MessageQueue(TransactionalMessageUtil.buildOpTopic(), messageQueue.getBrokerName(), messageQueue.getQueueId()); opQueueMap.put(messageQueue, opQueue); } return opQueue; }
@Override public MessageQueue select(List<MessageQueue> list, Message message, Object o) { for (MessageQueue mq : list) { if (mq.getQueueId() == queueId && mq.getBrokerName().equals(broker1Name)) { return mq; } } return list.get(0); } });
pos = 0; MessageQueue mq = tpInfo.getMessageQueueList().get(pos); if (latencyFaultTolerance.isAvailable(mq.getBrokerName())) { if (null == lastBrokerName || mq.getBrokerName().equals(lastBrokerName)) return mq; final MessageQueue mq = tpInfo.selectOneMessageQueue(); if (notBestBroker != null) { mq.setBrokerName(notBestBroker); mq.setQueueId(tpInfo.getSendWhichQueue().getAndIncrement() % writeQueueNums);
public static Set<MessageQueue> topicRouteData2TopicSubscribeInfo(final String topic, final TopicRouteData route) { Set<MessageQueue> mqList = new HashSet<MessageQueue>(); List<QueueData> qds = route.getQueueDatas(); for (QueueData qd : qds) { if (PermName.isReadable(qd.getPerm())) { for (int i = 0; i < qd.getReadQueueNums(); i++) { MessageQueue mq = new MessageQueue(topic, qd.getBrokerName(), i); mqList.add(mq); } } } return mqList; }
private HashMap<String/* brokerName */, Set<MessageQueue>> buildProcessQueueTableByBrokerName() { HashMap<String, Set<MessageQueue>> result = new HashMap<String, Set<MessageQueue>>(); for (MessageQueue mq : this.processQueueTable.keySet()) { Set<MessageQueue> mqs = result.get(mq.getBrokerName()); if (null == mqs) { mqs = new HashSet<MessageQueue>(); result.put(mq.getBrokerName(), mqs); } mqs.add(mq); } return result; }
public long fetchConsumeOffset(MessageQueue mq) { long offset = brokerController.getConsumerOffsetManager().queryOffset(TransactionalMessageUtil.buildConsumerGroup(), mq.getTopic(), mq.getQueueId()); if (offset == -1) { offset = store.getMinOffsetInQueue(mq.getTopic(), mq.getQueueId()); } return offset; }
@Override public Map<MessageQueue, Long> cloneOffsetTable(String topic) { Map<MessageQueue, Long> cloneOffsetTable = new HashMap<MessageQueue, Long>(); for (Map.Entry<MessageQueue, AtomicLong> entry : this.offsetTable.entrySet()) { MessageQueue mq = entry.getKey(); if (!UtilAll.isBlank(topic) && !topic.equals(mq.getTopic())) { continue; } cloneOffsetTable.put(mq, entry.getValue().get()); } return cloneOffsetTable; }
MessageQueue queue = entry.getKey(); OffsetWrapper offsetWrapper = entry.getValue(); if (topic.equals(queue.getTopic())) { hasConsumed = true; RollbackStats rollbackStats = resetOffsetConsumeOffset(addr, consumerGroup, queue, offsetWrapper, timestamp, force); this.mqClientInstance.getMQClientAPIImpl().getTopicStatsInfo(addr, topic, timeoutMillis).getOffsetTable(); for (int i = 0; i < topicRouteMap.get(addr); i++) { MessageQueue queue = new MessageQueue(topic, bd.getBrokerName(), i); OffsetWrapper offsetWrapper = new OffsetWrapper(); offsetWrapper.setBrokerOffset(topicStatus.get(queue).getMaxOffset());
/** * Read op message from Op Topic * * @param mq Target Message Queue * @param offset Offset in the message queue * @param nums Pull message number * @return Messages pulled from operate message queue. */ private PullResult pullOpMsg(MessageQueue mq, long offset, int nums) { return transactionalMessageBridge.getOpMessage(mq.getQueueId(), offset, nums); }
private MessageQueue getOpQueueByHalf(MessageQueue halfMQ) { MessageQueue opQueue = new MessageQueue(); opQueue.setTopic(TransactionalMessageUtil.buildOpTopic()); opQueue.setBrokerName(halfMQ.getBrokerName()); opQueue.setQueueId(halfMQ.getQueueId()); return opQueue; }
private void writeOp(Message message, MessageQueue mq) { MessageQueue opQueue; if (opQueueMap.containsKey(mq)) { opQueue = opQueueMap.get(mq); } else { opQueue = getOpQueueByHalf(mq); MessageQueue oldQueue = opQueueMap.putIfAbsent(mq, opQueue); if (oldQueue != null) { opQueue = oldQueue; } } if (opQueue == null) { opQueue = new MessageQueue(TransactionalMessageUtil.buildOpTopic(), mq.getBrokerName(), mq.getQueueId()); } putMessage(makeOpMessageInner(message, opQueue)); }
@Override public MessageQueue select(List<MessageQueue> list, Message message, Object o) { for (MessageQueue mq : list) { if (mq.getQueueId() == queueId && mq.getBrokerName().equals(broker2Name)) { return mq; } } return list.get(8); } });
pos = 0; MessageQueue mq = tpInfo.getMessageQueueList().get(pos); if (latencyFaultTolerance.isAvailable(mq.getBrokerName())) { if (null == lastBrokerName || mq.getBrokerName().equals(lastBrokerName)) return mq; final MessageQueue mq = tpInfo.selectOneMessageQueue(); if (notBestBroker != null) { mq.setBrokerName(notBestBroker); mq.setQueueId(tpInfo.getSendWhichQueue().getAndIncrement() % writeQueueNums);
public boolean putOpMessage(MessageExt messageExt, String opType) { MessageQueue messageQueue = new MessageQueue(messageExt.getTopic(), this.brokerController.getBrokerConfig().getBrokerName(), messageExt.getQueueId()); if (TransactionalMessageUtil.REMOVETAG.equals(opType)) { return addRemoveTagInTransactionOp(messageExt, messageQueue); } return true; }
@Override public MessageQueue select(List<MessageQueue> mqs, Message msg, Object arg) { Set<String> brokerSet = (Set<String>) arg; List<MessageQueue> filterMqs = new ArrayList<MessageQueue>(); for (MessageQueue queue : mqs) { if (brokerSet.contains(queue.getBrokerName())) { filterMqs.add(queue); } } int index = sendWhichQueue.getAndIncrement(); int pos = Math.abs(index) % filterMqs.size(); if (pos < 0) { pos = 0; } return filterMqs.get(pos); } }, traceBrokerSet, callback);
public void updateConsumeOffset(MessageQueue mq, long offset) { this.brokerController.getConsumerOffsetManager().commitOffset( RemotingHelper.parseSocketAddressAddr(this.storeHost), TransactionalMessageUtil.buildConsumerGroup(), mq.getTopic(), mq.getQueueId(), offset); }
@Override public Map<MessageQueue, Long> cloneOffsetTable(String topic) { Map<MessageQueue, Long> cloneOffsetTable = new HashMap<MessageQueue, Long>(); for (Map.Entry<MessageQueue, AtomicLong> entry : this.offsetTable.entrySet()) { MessageQueue mq = entry.getKey(); if (!UtilAll.isBlank(topic) && !topic.equals(mq.getTopic())) { continue; } cloneOffsetTable.put(mq, entry.getValue().get()); } return cloneOffsetTable; }