org.apache.rocketmq.common.admin.OffsetWrapper Java Examples
The following examples show how to use
org.apache.rocketmq.common.admin.OffsetWrapper.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: DefaultMQAdminExtImpl.java From rocketmq-all-4.1.0-incubating with Apache License 2.0 | 6 votes |
public boolean consumed(final MessageExt msg, final String group) throws RemotingException, MQClientException, InterruptedException, MQBrokerException { ConsumeStats cstats = this.examineConsumeStats(group); ClusterInfo ci = this.examineBrokerClusterInfo(); Iterator<Entry<MessageQueue, OffsetWrapper>> it = cstats.getOffsetTable().entrySet().iterator(); while (it.hasNext()) { Entry<MessageQueue, OffsetWrapper> next = it.next(); MessageQueue mq = next.getKey(); if (mq.getTopic().equals(msg.getTopic()) && mq.getQueueId() == msg.getQueueId()) { BrokerData brokerData = ci.getBrokerAddrTable().get(mq.getBrokerName()); if (brokerData != null) { String addr = brokerData.getBrokerAddrs().get(MixAll.MASTER_ID); if (addr.equals(RemotingUtil.socketAddress2String(msg.getStoreHost()))) { if (next.getValue().getConsumerOffset() > msg.getQueueOffset()) { return true; } } } } } return false; }
Example #2
Source File: DefaultMQAdminExtImpl.java From rocketmq with Apache License 2.0 | 6 votes |
public boolean consumed(final MessageExt msg, final String group) throws RemotingException, MQClientException, InterruptedException, MQBrokerException { ConsumeStats cstats = this.examineConsumeStats(group); ClusterInfo ci = this.examineBrokerClusterInfo(); Iterator<Entry<MessageQueue, OffsetWrapper>> it = cstats.getOffsetTable().entrySet().iterator(); while (it.hasNext()) { Entry<MessageQueue, OffsetWrapper> next = it.next(); MessageQueue mq = next.getKey(); if (mq.getTopic().equals(msg.getTopic()) && mq.getQueueId() == msg.getQueueId()) { BrokerData brokerData = ci.getBrokerAddrTable().get(mq.getBrokerName()); if (brokerData != null) { String addr = brokerData.getBrokerAddrs().get(MixAll.MASTER_ID); if (addr.equals(RemotingUtil.socketAddress2String(msg.getStoreHost()))) { if (next.getValue().getConsumerOffset() > msg.getQueueOffset()) { return true; } } } } } return false; }
Example #3
Source File: DefaultMQAdminExtImpl.java From DDMQ with Apache License 2.0 | 5 votes |
private RollbackStats resetOffsetConsumeOffset(String brokerAddr, String consumeGroup, MessageQueue queue, OffsetWrapper offsetWrapper, long timestamp, boolean force) throws RemotingException, InterruptedException, MQBrokerException { long resetOffset; if (timestamp == -1) { resetOffset = this.mqClientInstance.getMQClientAPIImpl().getMaxOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timeoutMillis); } else { resetOffset = this.mqClientInstance.getMQClientAPIImpl().searchOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timestamp, timeoutMillis); } RollbackStats rollbackStats = new RollbackStats(); rollbackStats.setBrokerName(queue.getBrokerName()); rollbackStats.setQueueId(queue.getQueueId()); rollbackStats.setBrokerOffset(offsetWrapper.getBrokerOffset()); rollbackStats.setConsumerOffset(offsetWrapper.getConsumerOffset()); rollbackStats.setTimestampOffset(resetOffset); rollbackStats.setRollbackOffset(offsetWrapper.getConsumerOffset()); if (force || resetOffset <= offsetWrapper.getConsumerOffset()) { rollbackStats.setRollbackOffset(resetOffset); UpdateConsumerOffsetRequestHeader requestHeader = new UpdateConsumerOffsetRequestHeader(); requestHeader.setConsumerGroup(consumeGroup); requestHeader.setTopic(queue.getTopic()); requestHeader.setQueueId(queue.getQueueId()); requestHeader.setCommitOffset(resetOffset); this.mqClientInstance.getMQClientAPIImpl().updateConsumerOffset(brokerAddr, requestHeader, timeoutMillis); } return rollbackStats; }
Example #4
Source File: DefaultMQAdminExtImpl.java From rocketmq-all-4.1.0-incubating with Apache License 2.0 | 5 votes |
private RollbackStats resetOffsetConsumeOffset(String brokerAddr, String consumeGroup, MessageQueue queue, OffsetWrapper offsetWrapper, long timestamp, boolean force) throws RemotingException, InterruptedException, MQBrokerException { long resetOffset; if (timestamp == -1) { resetOffset = this.mqClientInstance.getMQClientAPIImpl().getMaxOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timeoutMillis); } else { resetOffset = this.mqClientInstance.getMQClientAPIImpl().searchOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timestamp, timeoutMillis); } RollbackStats rollbackStats = new RollbackStats(); rollbackStats.setBrokerName(queue.getBrokerName()); rollbackStats.setQueueId(queue.getQueueId()); rollbackStats.setBrokerOffset(offsetWrapper.getBrokerOffset()); rollbackStats.setConsumerOffset(offsetWrapper.getConsumerOffset()); rollbackStats.setTimestampOffset(resetOffset); rollbackStats.setRollbackOffset(offsetWrapper.getConsumerOffset()); if (force || resetOffset <= offsetWrapper.getConsumerOffset()) { rollbackStats.setRollbackOffset(resetOffset); UpdateConsumerOffsetRequestHeader requestHeader = new UpdateConsumerOffsetRequestHeader(); requestHeader.setConsumerGroup(consumeGroup); requestHeader.setTopic(queue.getTopic()); requestHeader.setQueueId(queue.getQueueId()); requestHeader.setCommitOffset(resetOffset); this.mqClientInstance.getMQClientAPIImpl().updateConsumerOffset(brokerAddr, requestHeader, timeoutMillis); } return rollbackStats; }
Example #5
Source File: ConsumerProgressSubCommandTest.java From DDMQ with Apache License 2.0 | 5 votes |
@BeforeClass public static void init() throws NoSuchFieldException, IllegalAccessException, InterruptedException, RemotingException, MQClientException, MQBrokerException { mQClientAPIImpl = mock(MQClientAPIImpl.class); defaultMQAdminExt = new DefaultMQAdminExt(); defaultMQAdminExtImpl = new DefaultMQAdminExtImpl(defaultMQAdminExt, 1000); Field field = DefaultMQAdminExtImpl.class.getDeclaredField("mqClientInstance"); field.setAccessible(true); field.set(defaultMQAdminExtImpl, mqClientInstance); field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl"); field.setAccessible(true); field.set(mqClientInstance, mQClientAPIImpl); field = DefaultMQAdminExt.class.getDeclaredField("defaultMQAdminExtImpl"); field.setAccessible(true); field.set(defaultMQAdminExt, defaultMQAdminExtImpl); TopicRouteData topicRouteData = new TopicRouteData(); List<BrokerData> brokerDatas = new ArrayList<>(); HashMap<Long, String> brokerAddrs = new HashMap<>(); brokerAddrs.put(1234l, "127.0.0.1:10911"); BrokerData brokerData = new BrokerData(); brokerData.setCluster("default-cluster"); brokerData.setBrokerName("default-broker"); brokerData.setBrokerAddrs(brokerAddrs); brokerDatas.add(brokerData); topicRouteData.setBrokerDatas(brokerDatas); topicRouteData.setQueueDatas(new ArrayList<QueueData>()); topicRouteData.setFilterServerTable(new HashMap<String, List<String>>()); when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(topicRouteData); ConsumeStats consumeStats = new ConsumeStats(); consumeStats.setConsumeTps(1234); MessageQueue messageQueue = new MessageQueue(); OffsetWrapper offsetWrapper = new OffsetWrapper(); HashMap<MessageQueue, OffsetWrapper> stats = new HashMap<>(); stats.put(messageQueue, offsetWrapper); consumeStats.setOffsetTable(stats); when(mQClientAPIImpl.getConsumeStats(anyString(), anyString(), anyString(), anyLong())).thenReturn(consumeStats); }
Example #6
Source File: DefaultMQAdminExtImpl.java From DDMQ with Apache License 2.0 | 5 votes |
public boolean consumed(final MessageExt msg, final String group) throws RemotingException, MQClientException, InterruptedException, MQBrokerException { ConsumeStats cstats = this.examineConsumeStats(group); ClusterInfo ci = this.examineBrokerClusterInfo(); Iterator<Entry<MessageQueue, OffsetWrapper>> it = cstats.getOffsetTable().entrySet().iterator(); while (it.hasNext()) { Entry<MessageQueue, OffsetWrapper> next = it.next(); MessageQueue mq = next.getKey(); if (mq.getTopic().equals(msg.getTopic()) && mq.getQueueId() == msg.getQueueId()) { BrokerData brokerData = ci.getBrokerAddrTable().get(mq.getBrokerName()); if (brokerData != null) { String addr = brokerData.getBrokerAddrs().get(MixAll.MASTER_ID); if (addr.equals(RemotingUtil.socketAddress2String(msg.getStoreHost()))) { if (next.getValue().getConsumerOffset() > msg.getQueueOffset()) { return true; } } } } } return false; }
Example #7
Source File: DefaultMQAdminExtImpl.java From DDMQ with Apache License 2.0 | 5 votes |
private RollbackStats resetOffsetConsumeOffset(String brokerAddr, String consumeGroup, MessageQueue queue, OffsetWrapper offsetWrapper, long timestamp, boolean force) throws RemotingException, InterruptedException, MQBrokerException { long resetOffset; if (timestamp == -1) { resetOffset = this.mqClientInstance.getMQClientAPIImpl().getMaxOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timeoutMillis); } else { resetOffset = this.mqClientInstance.getMQClientAPIImpl().searchOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timestamp, timeoutMillis); } RollbackStats rollbackStats = new RollbackStats(); rollbackStats.setBrokerName(queue.getBrokerName()); rollbackStats.setQueueId(queue.getQueueId()); rollbackStats.setBrokerOffset(offsetWrapper.getBrokerOffset()); rollbackStats.setConsumerOffset(offsetWrapper.getConsumerOffset()); rollbackStats.setTimestampOffset(resetOffset); rollbackStats.setRollbackOffset(offsetWrapper.getConsumerOffset()); if (force || resetOffset <= offsetWrapper.getConsumerOffset()) { rollbackStats.setRollbackOffset(resetOffset); UpdateConsumerOffsetRequestHeader requestHeader = new UpdateConsumerOffsetRequestHeader(); requestHeader.setConsumerGroup(consumeGroup); requestHeader.setTopic(queue.getTopic()); requestHeader.setQueueId(queue.getQueueId()); requestHeader.setCommitOffset(resetOffset); this.mqClientInstance.getMQClientAPIImpl().updateConsumerOffset(brokerAddr, requestHeader, timeoutMillis); } return rollbackStats; }
Example #8
Source File: ConsumerProgressSubCommandTest.java From rocketmq-all-4.1.0-incubating with Apache License 2.0 | 5 votes |
@BeforeClass public static void init() throws NoSuchFieldException, IllegalAccessException, InterruptedException, RemotingException, MQClientException, MQBrokerException { mQClientAPIImpl = mock(MQClientAPIImpl.class); defaultMQAdminExt = new DefaultMQAdminExt(); defaultMQAdminExtImpl = new DefaultMQAdminExtImpl(defaultMQAdminExt, 1000); Field field = DefaultMQAdminExtImpl.class.getDeclaredField("mqClientInstance"); field.setAccessible(true); field.set(defaultMQAdminExtImpl, mqClientInstance); field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl"); field.setAccessible(true); field.set(mqClientInstance, mQClientAPIImpl); field = DefaultMQAdminExt.class.getDeclaredField("defaultMQAdminExtImpl"); field.setAccessible(true); field.set(defaultMQAdminExt, defaultMQAdminExtImpl); TopicRouteData topicRouteData = new TopicRouteData(); List<BrokerData> brokerDatas = new ArrayList<>(); HashMap<Long, String> brokerAddrs = new HashMap<>(); brokerAddrs.put(1234l, "127.0.0.1:10911"); BrokerData brokerData = new BrokerData(); brokerData.setCluster("default-cluster"); brokerData.setBrokerName("default-broker"); brokerData.setBrokerAddrs(brokerAddrs); brokerDatas.add(brokerData); topicRouteData.setBrokerDatas(brokerDatas); topicRouteData.setQueueDatas(new ArrayList<QueueData>()); topicRouteData.setFilterServerTable(new HashMap<String, List<String>>()); when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(topicRouteData); ConsumeStats consumeStats = new ConsumeStats(); consumeStats.setConsumeTps(1234); MessageQueue messageQueue = new MessageQueue(); OffsetWrapper offsetWrapper = new OffsetWrapper(); HashMap<MessageQueue, OffsetWrapper> stats = new HashMap<>(); stats.put(messageQueue, offsetWrapper); consumeStats.setOffsetTable(stats); when(mQClientAPIImpl.getConsumeStats(anyString(), anyString(), anyString(), anyLong())).thenReturn(consumeStats); }
Example #9
Source File: ConsumerProgressSubCommandTest.java From rocketmq with Apache License 2.0 | 5 votes |
@BeforeClass public static void init() throws NoSuchFieldException, IllegalAccessException, InterruptedException, RemotingException, MQClientException, MQBrokerException { mQClientAPIImpl = mock(MQClientAPIImpl.class); defaultMQAdminExt = new DefaultMQAdminExt(); defaultMQAdminExtImpl = new DefaultMQAdminExtImpl(defaultMQAdminExt, 1000); Field field = DefaultMQAdminExtImpl.class.getDeclaredField("mqClientInstance"); field.setAccessible(true); field.set(defaultMQAdminExtImpl, mqClientInstance); field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl"); field.setAccessible(true); field.set(mqClientInstance, mQClientAPIImpl); field = DefaultMQAdminExt.class.getDeclaredField("defaultMQAdminExtImpl"); field.setAccessible(true); field.set(defaultMQAdminExt, defaultMQAdminExtImpl); TopicRouteData topicRouteData = new TopicRouteData(); List<BrokerData> brokerDatas = new ArrayList<>(); HashMap<Long, String> brokerAddrs = new HashMap<>(); brokerAddrs.put(1234l, "127.0.0.1:10911"); BrokerData brokerData = new BrokerData(); brokerData.setCluster("default-cluster"); brokerData.setBrokerName("default-broker"); brokerData.setBrokerAddrs(brokerAddrs); brokerDatas.add(brokerData); topicRouteData.setBrokerDatas(brokerDatas); topicRouteData.setQueueDatas(new ArrayList<QueueData>()); topicRouteData.setFilterServerTable(new HashMap<String, List<String>>()); when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(topicRouteData); ConsumeStats consumeStats = new ConsumeStats(); consumeStats.setConsumeTps(1234); MessageQueue messageQueue = new MessageQueue(); OffsetWrapper offsetWrapper = new OffsetWrapper(); HashMap<MessageQueue, OffsetWrapper> stats = new HashMap<>(); stats.put(messageQueue, offsetWrapper); consumeStats.setOffsetTable(stats); when(mQClientAPIImpl.getConsumeStats(anyString(), anyString(), anyString(), anyLong())).thenReturn(consumeStats); }
Example #10
Source File: DefaultMQAdminExtImpl.java From rocketmq with Apache License 2.0 | 5 votes |
private RollbackStats resetOffsetConsumeOffset(String brokerAddr, String consumeGroup, MessageQueue queue, OffsetWrapper offsetWrapper, long timestamp, boolean force) throws RemotingException, InterruptedException, MQBrokerException { long resetOffset; if (timestamp == -1) { resetOffset = this.mqClientInstance.getMQClientAPIImpl().getMaxOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timeoutMillis); } else { resetOffset = this.mqClientInstance.getMQClientAPIImpl().searchOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timestamp, timeoutMillis); } RollbackStats rollbackStats = new RollbackStats(); rollbackStats.setBrokerName(queue.getBrokerName()); rollbackStats.setQueueId(queue.getQueueId()); rollbackStats.setBrokerOffset(offsetWrapper.getBrokerOffset()); rollbackStats.setConsumerOffset(offsetWrapper.getConsumerOffset()); rollbackStats.setTimestampOffset(resetOffset); rollbackStats.setRollbackOffset(offsetWrapper.getConsumerOffset()); if (force || resetOffset <= offsetWrapper.getConsumerOffset()) { rollbackStats.setRollbackOffset(resetOffset); UpdateConsumerOffsetRequestHeader requestHeader = new UpdateConsumerOffsetRequestHeader(); requestHeader.setConsumerGroup(consumeGroup); requestHeader.setTopic(queue.getTopic()); requestHeader.setQueueId(queue.getQueueId()); requestHeader.setCommitOffset(resetOffset); this.mqClientInstance.getMQClientAPIImpl().updateConsumerOffset(brokerAddr, requestHeader, timeoutMillis); } return rollbackStats; }
Example #11
Source File: ConsumerProgressSubCommandTest.java From rocketmq-read with Apache License 2.0 | 5 votes |
@BeforeClass public static void init() throws NoSuchFieldException, IllegalAccessException, InterruptedException, RemotingException, MQClientException, MQBrokerException { mQClientAPIImpl = mock(MQClientAPIImpl.class); defaultMQAdminExt = new DefaultMQAdminExt(); defaultMQAdminExtImpl = new DefaultMQAdminExtImpl(defaultMQAdminExt, 1000); Field field = DefaultMQAdminExtImpl.class.getDeclaredField("mqClientInstance"); field.setAccessible(true); field.set(defaultMQAdminExtImpl, mqClientInstance); field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl"); field.setAccessible(true); field.set(mqClientInstance, mQClientAPIImpl); field = DefaultMQAdminExt.class.getDeclaredField("defaultMQAdminExtImpl"); field.setAccessible(true); field.set(defaultMQAdminExt, defaultMQAdminExtImpl); TopicRouteData topicRouteData = new TopicRouteData(); List<BrokerData> brokerDatas = new ArrayList<>(); HashMap<Long, String> brokerAddrs = new HashMap<>(); brokerAddrs.put(1234l, "127.0.0.1:10911"); BrokerData brokerData = new BrokerData(); brokerData.setCluster("default-cluster"); brokerData.setBrokerName("default-broker"); brokerData.setBrokerAddrs(brokerAddrs); brokerDatas.add(brokerData); topicRouteData.setBrokerDatas(brokerDatas); topicRouteData.setQueueDatas(new ArrayList<QueueData>()); topicRouteData.setFilterServerTable(new HashMap<String, List<String>>()); when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(topicRouteData); ConsumeStats consumeStats = new ConsumeStats(); consumeStats.setConsumeTps(1234); MessageQueue messageQueue = new MessageQueue(); OffsetWrapper offsetWrapper = new OffsetWrapper(); HashMap<MessageQueue, OffsetWrapper> stats = new HashMap<>(); stats.put(messageQueue, offsetWrapper); consumeStats.setOffsetTable(stats); when(mQClientAPIImpl.getConsumeStats(anyString(), anyString(), anyString(), anyLong())).thenReturn(consumeStats); }
Example #12
Source File: ConsumerProgressSubCommandTest.java From rocketmq_trans_message with Apache License 2.0 | 5 votes |
@BeforeClass public static void init() throws NoSuchFieldException, IllegalAccessException, InterruptedException, RemotingException, MQClientException, MQBrokerException { mQClientAPIImpl = mock(MQClientAPIImpl.class); defaultMQAdminExt = new DefaultMQAdminExt(); defaultMQAdminExtImpl = new DefaultMQAdminExtImpl(defaultMQAdminExt, 1000); Field field = DefaultMQAdminExtImpl.class.getDeclaredField("mqClientInstance"); field.setAccessible(true); field.set(defaultMQAdminExtImpl, mqClientInstance); field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl"); field.setAccessible(true); field.set(mqClientInstance, mQClientAPIImpl); field = DefaultMQAdminExt.class.getDeclaredField("defaultMQAdminExtImpl"); field.setAccessible(true); field.set(defaultMQAdminExt, defaultMQAdminExtImpl); TopicRouteData topicRouteData = new TopicRouteData(); List<BrokerData> brokerDatas = new ArrayList<>(); HashMap<Long, String> brokerAddrs = new HashMap<>(); brokerAddrs.put(1234l, "127.0.0.1:10911"); BrokerData brokerData = new BrokerData(); brokerData.setCluster("default-cluster"); brokerData.setBrokerName("default-broker"); brokerData.setBrokerAddrs(brokerAddrs); brokerDatas.add(brokerData); topicRouteData.setBrokerDatas(brokerDatas); topicRouteData.setQueueDatas(new ArrayList<QueueData>()); topicRouteData.setFilterServerTable(new HashMap<String, List<String>>()); when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(topicRouteData); ConsumeStats consumeStats = new ConsumeStats(); consumeStats.setConsumeTps(1234); MessageQueue messageQueue = new MessageQueue(); OffsetWrapper offsetWrapper = new OffsetWrapper(); HashMap<MessageQueue, OffsetWrapper> stats = new HashMap<>(); stats.put(messageQueue, offsetWrapper); consumeStats.setOffsetTable(stats); when(mQClientAPIImpl.getConsumeStats(anyString(), anyString(), anyString(), anyLong())).thenReturn(consumeStats); }
Example #13
Source File: DefaultMQAdminExtImpl.java From rocketmq-read with Apache License 2.0 | 5 votes |
public boolean consumed(final MessageExt msg, final String group) throws RemotingException, MQClientException, InterruptedException, MQBrokerException { ConsumeStats cstats = this.examineConsumeStats(group); ClusterInfo ci = this.examineBrokerClusterInfo(); Iterator<Entry<MessageQueue, OffsetWrapper>> it = cstats.getOffsetTable().entrySet().iterator(); while (it.hasNext()) { Entry<MessageQueue, OffsetWrapper> next = it.next(); MessageQueue mq = next.getKey(); if (mq.getTopic().equals(msg.getTopic()) && mq.getQueueId() == msg.getQueueId()) { BrokerData brokerData = ci.getBrokerAddrTable().get(mq.getBrokerName()); if (brokerData != null) { String addr = brokerData.getBrokerAddrs().get(MixAll.MASTER_ID); if (RemotingUtil.socketAddress2String(msg.getStoreHost()).equals(addr)) { if (next.getValue().getConsumerOffset() > msg.getQueueOffset()) { return true; } } } } } return false; }
Example #14
Source File: DefaultMQAdminExtImpl.java From rocketmq-read with Apache License 2.0 | 5 votes |
private RollbackStats resetOffsetConsumeOffset(String brokerAddr, String consumeGroup, MessageQueue queue, OffsetWrapper offsetWrapper, long timestamp, boolean force) throws RemotingException, InterruptedException, MQBrokerException { long resetOffset; if (timestamp == -1) { resetOffset = this.mqClientInstance.getMQClientAPIImpl().getMaxOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timeoutMillis); } else { resetOffset = this.mqClientInstance.getMQClientAPIImpl().searchOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timestamp, timeoutMillis); } RollbackStats rollbackStats = new RollbackStats(); rollbackStats.setBrokerName(queue.getBrokerName()); rollbackStats.setQueueId(queue.getQueueId()); rollbackStats.setBrokerOffset(offsetWrapper.getBrokerOffset()); rollbackStats.setConsumerOffset(offsetWrapper.getConsumerOffset()); rollbackStats.setTimestampOffset(resetOffset); rollbackStats.setRollbackOffset(offsetWrapper.getConsumerOffset()); if (force || resetOffset <= offsetWrapper.getConsumerOffset()) { rollbackStats.setRollbackOffset(resetOffset); UpdateConsumerOffsetRequestHeader requestHeader = new UpdateConsumerOffsetRequestHeader(); requestHeader.setConsumerGroup(consumeGroup); requestHeader.setTopic(queue.getTopic()); requestHeader.setQueueId(queue.getQueueId()); requestHeader.setCommitOffset(resetOffset); this.mqClientInstance.getMQClientAPIImpl().updateConsumerOffset(brokerAddr, requestHeader, timeoutMillis); } return rollbackStats; }
Example #15
Source File: DefaultMQAdminExtImpl.java From rocketmq with Apache License 2.0 | 5 votes |
private RollbackStats resetOffsetConsumeOffset(String brokerAddr, String consumeGroup, MessageQueue queue, OffsetWrapper offsetWrapper, long timestamp, boolean force) throws RemotingException, InterruptedException, MQBrokerException { long resetOffset; if (timestamp == -1) { resetOffset = this.mqClientInstance.getMQClientAPIImpl().getMaxOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timeoutMillis); } else { resetOffset = this.mqClientInstance.getMQClientAPIImpl().searchOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timestamp, timeoutMillis); } RollbackStats rollbackStats = new RollbackStats(); rollbackStats.setBrokerName(queue.getBrokerName()); rollbackStats.setQueueId(queue.getQueueId()); rollbackStats.setBrokerOffset(offsetWrapper.getBrokerOffset()); rollbackStats.setConsumerOffset(offsetWrapper.getConsumerOffset()); rollbackStats.setTimestampOffset(resetOffset); rollbackStats.setRollbackOffset(offsetWrapper.getConsumerOffset()); if (force || resetOffset <= offsetWrapper.getConsumerOffset()) { rollbackStats.setRollbackOffset(resetOffset); UpdateConsumerOffsetRequestHeader requestHeader = new UpdateConsumerOffsetRequestHeader(); requestHeader.setConsumerGroup(consumeGroup); requestHeader.setTopic(queue.getTopic()); requestHeader.setQueueId(queue.getQueueId()); requestHeader.setCommitOffset(resetOffset); this.mqClientInstance.getMQClientAPIImpl().updateConsumerOffset(brokerAddr, requestHeader, timeoutMillis); } return rollbackStats; }
Example #16
Source File: ConsumerProgressSubCommandTest.java From rocketmq-4.3.0 with Apache License 2.0 | 5 votes |
@BeforeClass public static void init() throws NoSuchFieldException, IllegalAccessException, InterruptedException, RemotingException, MQClientException, MQBrokerException { mQClientAPIImpl = mock(MQClientAPIImpl.class); defaultMQAdminExt = new DefaultMQAdminExt(); defaultMQAdminExtImpl = new DefaultMQAdminExtImpl(defaultMQAdminExt, 1000); Field field = DefaultMQAdminExtImpl.class.getDeclaredField("mqClientInstance"); field.setAccessible(true); field.set(defaultMQAdminExtImpl, mqClientInstance); field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl"); field.setAccessible(true); field.set(mqClientInstance, mQClientAPIImpl); field = DefaultMQAdminExt.class.getDeclaredField("defaultMQAdminExtImpl"); field.setAccessible(true); field.set(defaultMQAdminExt, defaultMQAdminExtImpl); TopicRouteData topicRouteData = new TopicRouteData(); List<BrokerData> brokerDatas = new ArrayList<>(); HashMap<Long, String> brokerAddrs = new HashMap<>(); brokerAddrs.put(1234l, "127.0.0.1:10911"); BrokerData brokerData = new BrokerData(); brokerData.setCluster("default-cluster"); brokerData.setBrokerName("default-broker"); brokerData.setBrokerAddrs(brokerAddrs); brokerDatas.add(brokerData); topicRouteData.setBrokerDatas(brokerDatas); topicRouteData.setQueueDatas(new ArrayList<QueueData>()); topicRouteData.setFilterServerTable(new HashMap<String, List<String>>()); when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(topicRouteData); ConsumeStats consumeStats = new ConsumeStats(); consumeStats.setConsumeTps(1234); MessageQueue messageQueue = new MessageQueue(); OffsetWrapper offsetWrapper = new OffsetWrapper(); HashMap<MessageQueue, OffsetWrapper> stats = new HashMap<>(); stats.put(messageQueue, offsetWrapper); consumeStats.setOffsetTable(stats); when(mQClientAPIImpl.getConsumeStats(anyString(), anyString(), anyString(), anyLong())).thenReturn(consumeStats); }
Example #17
Source File: DefaultMQAdminExtImpl.java From rocketmq with Apache License 2.0 | 5 votes |
public boolean consumed(final MessageExt msg, final String group) throws RemotingException, MQClientException, InterruptedException, MQBrokerException { ConsumeStats cstats = this.examineConsumeStats(group); ClusterInfo ci = this.examineBrokerClusterInfo(); Iterator<Entry<MessageQueue, OffsetWrapper>> it = cstats.getOffsetTable().entrySet().iterator(); while (it.hasNext()) { Entry<MessageQueue, OffsetWrapper> next = it.next(); MessageQueue mq = next.getKey(); if (mq.getTopic().equals(msg.getTopic()) && mq.getQueueId() == msg.getQueueId()) { BrokerData brokerData = ci.getBrokerAddrTable().get(mq.getBrokerName()); if (brokerData != null) { String addr = brokerData.getBrokerAddrs().get(MixAll.MASTER_ID); if (RemotingUtil.socketAddress2String(msg.getStoreHost()).equals(addr)) { if (next.getValue().getConsumerOffset() > msg.getQueueOffset()) { return true; } } } } } return false; }
Example #18
Source File: DefaultMQAdminExtImpl.java From DDMQ with Apache License 2.0 | 5 votes |
public boolean consumed(final MessageExt msg, final String group) throws RemotingException, MQClientException, InterruptedException, MQBrokerException { ConsumeStats cstats = this.examineConsumeStats(group); ClusterInfo ci = this.examineBrokerClusterInfo(); Iterator<Entry<MessageQueue, OffsetWrapper>> it = cstats.getOffsetTable().entrySet().iterator(); while (it.hasNext()) { Entry<MessageQueue, OffsetWrapper> next = it.next(); MessageQueue mq = next.getKey(); if (mq.getTopic().equals(msg.getTopic()) && mq.getQueueId() == msg.getQueueId()) { BrokerData brokerData = ci.getBrokerAddrTable().get(mq.getBrokerName()); if (brokerData != null) { String addr = brokerData.getBrokerAddrs().get(MixAll.MASTER_ID); if (addr.equals(RemotingUtil.socketAddress2String(msg.getStoreHost()))) { if (next.getValue().getConsumerOffset() > msg.getQueueOffset()) { return true; } } } } } return false; }
Example #19
Source File: DefaultMQAdminExtImpl.java From rocketmq-4.3.0 with Apache License 2.0 | 5 votes |
public boolean consumed(final MessageExt msg, final String group) throws RemotingException, MQClientException, InterruptedException, MQBrokerException { ConsumeStats cstats = this.examineConsumeStats(group); ClusterInfo ci = this.examineBrokerClusterInfo(); Iterator<Entry<MessageQueue, OffsetWrapper>> it = cstats.getOffsetTable().entrySet().iterator(); while (it.hasNext()) { Entry<MessageQueue, OffsetWrapper> next = it.next(); MessageQueue mq = next.getKey(); if (mq.getTopic().equals(msg.getTopic()) && mq.getQueueId() == msg.getQueueId()) { BrokerData brokerData = ci.getBrokerAddrTable().get(mq.getBrokerName()); if (brokerData != null) { String addr = brokerData.getBrokerAddrs().get(MixAll.MASTER_ID); if (addr.equals(RemotingUtil.socketAddress2String(msg.getStoreHost()))) { if (next.getValue().getConsumerOffset() > msg.getQueueOffset()) { return true; } } } } } return false; }
Example #20
Source File: DefaultMQAdminExtImpl.java From rocketmq-4.3.0 with Apache License 2.0 | 5 votes |
private RollbackStats resetOffsetConsumeOffset(String brokerAddr, String consumeGroup, MessageQueue queue, OffsetWrapper offsetWrapper, long timestamp, boolean force) throws RemotingException, InterruptedException, MQBrokerException { long resetOffset; if (timestamp == -1) { resetOffset = this.mqClientInstance.getMQClientAPIImpl().getMaxOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timeoutMillis); } else { resetOffset = this.mqClientInstance.getMQClientAPIImpl().searchOffset(brokerAddr, queue.getTopic(), queue.getQueueId(), timestamp, timeoutMillis); } RollbackStats rollbackStats = new RollbackStats(); rollbackStats.setBrokerName(queue.getBrokerName()); rollbackStats.setQueueId(queue.getQueueId()); rollbackStats.setBrokerOffset(offsetWrapper.getBrokerOffset()); rollbackStats.setConsumerOffset(offsetWrapper.getConsumerOffset()); rollbackStats.setTimestampOffset(resetOffset); rollbackStats.setRollbackOffset(offsetWrapper.getConsumerOffset()); if (force || resetOffset <= offsetWrapper.getConsumerOffset()) { rollbackStats.setRollbackOffset(resetOffset); UpdateConsumerOffsetRequestHeader requestHeader = new UpdateConsumerOffsetRequestHeader(); requestHeader.setConsumerGroup(consumeGroup); requestHeader.setTopic(queue.getTopic()); requestHeader.setQueueId(queue.getQueueId()); requestHeader.setCommitOffset(resetOffset); this.mqClientInstance.getMQClientAPIImpl().updateConsumerOffset(brokerAddr, requestHeader, timeoutMillis); } return rollbackStats; }
Example #21
Source File: ConsumerProgressSubCommandTest.java From rocketmq with Apache License 2.0 | 5 votes |
@BeforeClass public static void init() throws NoSuchFieldException, IllegalAccessException, InterruptedException, RemotingException, MQClientException, MQBrokerException { mQClientAPIImpl = mock(MQClientAPIImpl.class); defaultMQAdminExt = new DefaultMQAdminExt(); defaultMQAdminExtImpl = new DefaultMQAdminExtImpl(defaultMQAdminExt, 1000); Field field = DefaultMQAdminExtImpl.class.getDeclaredField("mqClientInstance"); field.setAccessible(true); field.set(defaultMQAdminExtImpl, mqClientInstance); field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl"); field.setAccessible(true); field.set(mqClientInstance, mQClientAPIImpl); field = DefaultMQAdminExt.class.getDeclaredField("defaultMQAdminExtImpl"); field.setAccessible(true); field.set(defaultMQAdminExt, defaultMQAdminExtImpl); TopicRouteData topicRouteData = new TopicRouteData(); List<BrokerData> brokerDatas = new ArrayList<>(); HashMap<Long, String> brokerAddrs = new HashMap<>(); brokerAddrs.put(1234l, "127.0.0.1:10911"); BrokerData brokerData = new BrokerData(); brokerData.setCluster("default-cluster"); brokerData.setBrokerName("default-broker"); brokerData.setBrokerAddrs(brokerAddrs); brokerDatas.add(brokerData); topicRouteData.setBrokerDatas(brokerDatas); topicRouteData.setQueueDatas(new ArrayList<QueueData>()); topicRouteData.setFilterServerTable(new HashMap<String, List<String>>()); when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(topicRouteData); ConsumeStats consumeStats = new ConsumeStats(); consumeStats.setConsumeTps(1234); MessageQueue messageQueue = new MessageQueue(); OffsetWrapper offsetWrapper = new OffsetWrapper(); HashMap<MessageQueue, OffsetWrapper> stats = new HashMap<>(); stats.put(messageQueue, offsetWrapper); consumeStats.setOffsetTable(stats); when(mQClientAPIImpl.getConsumeStats(anyString(), anyString(), anyString(), anyLong())).thenReturn(consumeStats); }
Example #22
Source File: ConsumerProgressSubCommandTest.java From DDMQ with Apache License 2.0 | 5 votes |
@BeforeClass public static void init() throws NoSuchFieldException, IllegalAccessException, InterruptedException, RemotingException, MQClientException, MQBrokerException { mQClientAPIImpl = mock(MQClientAPIImpl.class); defaultMQAdminExt = new DefaultMQAdminExt(); defaultMQAdminExtImpl = new DefaultMQAdminExtImpl(defaultMQAdminExt, 1000); Field field = DefaultMQAdminExtImpl.class.getDeclaredField("mqClientInstance"); field.setAccessible(true); field.set(defaultMQAdminExtImpl, mqClientInstance); field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl"); field.setAccessible(true); field.set(mqClientInstance, mQClientAPIImpl); field = DefaultMQAdminExt.class.getDeclaredField("defaultMQAdminExtImpl"); field.setAccessible(true); field.set(defaultMQAdminExt, defaultMQAdminExtImpl); TopicRouteData topicRouteData = new TopicRouteData(); List<BrokerData> brokerDatas = new ArrayList<>(); HashMap<Long, String> brokerAddrs = new HashMap<>(); brokerAddrs.put(1234l, "127.0.0.1:10911"); BrokerData brokerData = new BrokerData(); brokerData.setCluster("default-cluster"); brokerData.setBrokerName("default-broker"); brokerData.setBrokerAddrs(brokerAddrs); brokerDatas.add(brokerData); topicRouteData.setBrokerDatas(brokerDatas); topicRouteData.setQueueDatas(new ArrayList<QueueData>()); topicRouteData.setFilterServerTable(new HashMap<String, List<String>>()); when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(topicRouteData); ConsumeStats consumeStats = new ConsumeStats(); consumeStats.setConsumeTps(1234); MessageQueue messageQueue = new MessageQueue(); OffsetWrapper offsetWrapper = new OffsetWrapper(); HashMap<MessageQueue, OffsetWrapper> stats = new HashMap<>(); stats.put(messageQueue, offsetWrapper); consumeStats.setOffsetTable(stats); when(mQClientAPIImpl.getConsumeStats(anyString(), anyString(), anyString(), anyLong())).thenReturn(consumeStats); }
Example #23
Source File: MonitorServiceTest.java From rocketmq with Apache License 2.0 | 4 votes |
@BeforeClass public static void init() throws NoSuchFieldException, IllegalAccessException, RemotingException, MQClientException, InterruptedException, MQBrokerException { monitorConfig = new MonitorConfig(); monitorListener = new DefaultMonitorListener(); defaultMQPullConsumer = mock(DefaultMQPullConsumer.class); defaultMQPushConsumer = mock(DefaultMQPushConsumer.class); mQClientAPIImpl = mock(MQClientAPIImpl.class); defaultMQAdminExt = new DefaultMQAdminExt(); defaultMQAdminExtImpl = new DefaultMQAdminExtImpl(defaultMQAdminExt, 1000); monitorService = new MonitorService(monitorConfig, monitorListener, null); Field field = DefaultMQAdminExtImpl.class.getDeclaredField("mqClientInstance"); field.setAccessible(true); field.set(defaultMQAdminExtImpl, mqClientInstance); field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl"); field.setAccessible(true); field.set(mqClientInstance, mQClientAPIImpl); field = DefaultMQAdminExt.class.getDeclaredField("defaultMQAdminExtImpl"); field.setAccessible(true); field.set(defaultMQAdminExt, defaultMQAdminExtImpl); field = MonitorService.class.getDeclaredField("defaultMQAdminExt"); field.setAccessible(true); field.set(monitorService, defaultMQAdminExt); field = MonitorService.class.getDeclaredField("defaultMQPullConsumer"); field.setAccessible(true); field.set(monitorService, defaultMQPullConsumer); field = MonitorService.class.getDeclaredField("defaultMQPushConsumer"); field.setAccessible(true); field.set(monitorService, defaultMQPushConsumer); TopicList topicList = new TopicList(); Set<String> topicSet = new HashSet<>(); topicSet.add("topic_one"); topicSet.add("topic_two"); topicList.setTopicList(topicSet); when(mQClientAPIImpl.getTopicListFromNameServer(anyLong())).thenReturn(topicList); TopicRouteData topicRouteData = new TopicRouteData(); List<BrokerData> brokerDatas = new ArrayList<>(); HashMap<Long, String> brokerAddrs = new HashMap<>(); brokerAddrs.put(1234l, "127.0.0.1:10911"); BrokerData brokerData = new BrokerData(); brokerData.setCluster("default-cluster"); brokerData.setBrokerName("default-broker"); brokerData.setBrokerAddrs(brokerAddrs); brokerDatas.add(brokerData); topicRouteData.setBrokerDatas(brokerDatas); topicRouteData.setQueueDatas(new ArrayList<QueueData>()); topicRouteData.setFilterServerTable(new HashMap<String, List<String>>()); when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(topicRouteData); ConsumeStats consumeStats = new ConsumeStats(); consumeStats.setConsumeTps(1234); MessageQueue messageQueue = new MessageQueue(); OffsetWrapper offsetWrapper = new OffsetWrapper(); HashMap<MessageQueue, OffsetWrapper> stats = new HashMap<>(); stats.put(messageQueue, offsetWrapper); consumeStats.setOffsetTable(stats); when(mQClientAPIImpl.getConsumeStats(anyString(), anyString(), anyString(), anyLong())).thenReturn(consumeStats); ConsumerConnection consumerConnection = new ConsumerConnection(); consumerConnection.setConsumeType(ConsumeType.CONSUME_PASSIVELY); consumerConnection.setMessageModel(MessageModel.CLUSTERING); HashSet<Connection> connections = new HashSet<>(); Connection connection = new Connection(); connection.setClientId("client_id"); connection.setClientAddr("127.0.0.1:109111"); connection.setLanguage(LanguageCode.JAVA); connection.setVersion(MQVersion.Version.V4_0_0_SNAPSHOT.ordinal()); connections.add(connection); consumerConnection.setConnectionSet(connections); consumerConnection.setSubscriptionTable(new ConcurrentHashMap<String, SubscriptionData>()); consumerConnection.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); when(mQClientAPIImpl.getConsumerConnectionList(anyString(), anyString(), anyLong())).thenReturn(consumerConnection); ConsumerRunningInfo consumerRunningInfo = new ConsumerRunningInfo(); consumerRunningInfo.setJstack("test"); consumerRunningInfo.setMqTable(new TreeMap<MessageQueue, ProcessQueueInfo>()); consumerRunningInfo.setStatusTable(new TreeMap<String, ConsumeStatus>()); consumerRunningInfo.setSubscriptionSet(new TreeSet<SubscriptionData>()); Properties properties = new Properties(); properties.put(ConsumerRunningInfo.PROP_CONSUME_TYPE, CONSUME_ACTIVELY); properties.put(ConsumerRunningInfo.PROP_CONSUMER_START_TIMESTAMP, System.currentTimeMillis()); consumerRunningInfo.setProperties(properties); when(mQClientAPIImpl.getConsumerRunningInfo(anyString(), anyString(), anyString(), anyBoolean(), anyLong())).thenReturn(consumerRunningInfo); }
Example #24
Source File: AdminBrokerProcessor.java From rocketmq with Apache License 2.0 | 4 votes |
private RemotingCommand getConsumeStats(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { final RemotingCommand response = RemotingCommand.createResponseCommand(null); final GetConsumeStatsRequestHeader requestHeader = (GetConsumeStatsRequestHeader) request.decodeCommandCustomHeader(GetConsumeStatsRequestHeader.class); ConsumeStats consumeStats = new ConsumeStats(); Set<String> topics = new HashSet<String>(); if (UtilAll.isBlank(requestHeader.getTopic())) { topics = this.brokerController.getConsumerOffsetManager().whichTopicByConsumer(requestHeader.getConsumerGroup()); } else { topics.add(requestHeader.getTopic()); } for (String topic : topics) { TopicConfig topicConfig = this.brokerController.getTopicConfigManager().selectTopicConfig(topic); if (null == topicConfig) { log.warn("consumeStats, topic config not exist, {}", topic); continue; } { SubscriptionData findSubscriptionData = this.brokerController.getConsumerManager().findSubscriptionData(requestHeader.getConsumerGroup(), topic); if (null == findSubscriptionData && this.brokerController.getConsumerManager().findSubscriptionDataCount(requestHeader.getConsumerGroup()) > 0) { log.warn("consumeStats, the consumer group[{}], topic[{}] not exist", requestHeader.getConsumerGroup(), topic); continue; } } for (int i = 0; i < topicConfig.getReadQueueNums(); i++) { MessageQueue mq = new MessageQueue(); mq.setTopic(topic); mq.setBrokerName(this.brokerController.getBrokerConfig().getBrokerName()); mq.setQueueId(i); OffsetWrapper offsetWrapper = new OffsetWrapper(); long brokerOffset = this.brokerController.getMessageStore().getMaxOffsetInQueue(topic, i); if (brokerOffset < 0) brokerOffset = 0; long consumerOffset = this.brokerController.getConsumerOffsetManager().queryOffset( requestHeader.getConsumerGroup(), topic, i); if (consumerOffset < 0) consumerOffset = 0; offsetWrapper.setBrokerOffset(brokerOffset); offsetWrapper.setConsumerOffset(consumerOffset); long timeOffset = consumerOffset - 1; if (timeOffset >= 0) { long lastTimestamp = this.brokerController.getMessageStore().getMessageStoreTimeStamp(topic, i, timeOffset); if (lastTimestamp > 0) { offsetWrapper.setLastTimestamp(lastTimestamp); } } consumeStats.getOffsetTable().put(mq, offsetWrapper); } double consumeTps = this.brokerController.getBrokerStatsManager().tpsGroupGetNums(requestHeader.getConsumerGroup(), topic); consumeTps += consumeStats.getConsumeTps(); consumeStats.setConsumeTps(consumeTps); } byte[] body = consumeStats.encode(); response.setBody(body); response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }
Example #25
Source File: AdminBrokerProcessor.java From DDMQ with Apache License 2.0 | 4 votes |
private RemotingCommand getConsumeStats(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { final RemotingCommand response = RemotingCommand.createResponseCommand(null); final GetConsumeStatsRequestHeader requestHeader = (GetConsumeStatsRequestHeader) request.decodeCommandCustomHeader(GetConsumeStatsRequestHeader.class); ConsumeStats consumeStats = new ConsumeStats(); Set<String> topics = new HashSet<String>(); if (UtilAll.isBlank(requestHeader.getTopic())) { topics = this.brokerController.getConsumerOffsetManager().whichTopicByConsumer(requestHeader.getConsumerGroup()); } else { topics.add(requestHeader.getTopic()); } for (String topic : topics) { TopicConfig topicConfig = this.brokerController.getTopicConfigManager().selectTopicConfig(topic); if (null == topicConfig) { log.warn("consumeStats, topic config not exist, {}", topic); continue; } { SubscriptionData findSubscriptionData = this.brokerController.getConsumerManager().findSubscriptionData(requestHeader.getConsumerGroup(), topic); if (null == findSubscriptionData && this.brokerController.getConsumerManager().findSubscriptionDataCount(requestHeader.getConsumerGroup()) > 0) { log.warn("consumeStats, the consumer group[{}], topic[{}] not exist", requestHeader.getConsumerGroup(), topic); continue; } } for (int i = 0; i < topicConfig.getReadQueueNums(); i++) { MessageQueue mq = new MessageQueue(); mq.setTopic(topic); mq.setBrokerName(this.brokerController.getBrokerConfig().getBrokerName()); mq.setQueueId(i); OffsetWrapper offsetWrapper = new OffsetWrapper(); long brokerOffset = this.brokerController.getMessageStore().getMaxOffsetInQueue(topic, i); if (brokerOffset < 0) brokerOffset = 0; long consumerOffset = this.brokerController.getConsumerOffsetManager().queryOffset( requestHeader.getConsumerGroup(), topic, i); if (consumerOffset < 0) consumerOffset = 0; offsetWrapper.setBrokerOffset(brokerOffset); offsetWrapper.setConsumerOffset(consumerOffset); long timeOffset = consumerOffset - 1; if (timeOffset >= 0) { long lastTimestamp = this.brokerController.getMessageStore().getMessageStoreTimeStamp(topic, i, timeOffset); if (lastTimestamp > 0) { offsetWrapper.setLastTimestamp(lastTimestamp); } } consumeStats.getOffsetTable().put(mq, offsetWrapper); } double consumeTps = this.brokerController.getBrokerStatsManager().tpsGroupGetNums(requestHeader.getConsumerGroup(), topic); consumeTps += consumeStats.getConsumeTps(); consumeStats.setConsumeTps(consumeTps); } byte[] body = consumeStats.encode(); response.setBody(body); response.setCode(ResponseCode.SUCCESS); response.setRemark(null); return response; }
Example #26
Source File: BrokerConsumeStatsSubCommad.java From rocketmq-all-4.1.0-incubating with Apache License 2.0 | 4 votes |
@Override public void execute(CommandLine commandLine, Options options, RPCHook rpcHook) throws SubCommandException { DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt(rpcHook); defaultMQAdminExt.setInstanceName(Long.toString(System.currentTimeMillis())); try { defaultMQAdminExt.start(); String brokerAddr = commandLine.getOptionValue('b').trim(); boolean isOrder = false; long timeoutMillis = 50000; long diffLevel = 0; if (commandLine.hasOption('o')) { isOrder = Boolean.parseBoolean(commandLine.getOptionValue('o').trim()); } if (commandLine.hasOption('t')) { timeoutMillis = Long.parseLong(commandLine.getOptionValue('t').trim()); } if (commandLine.hasOption('l')) { diffLevel = Long.parseLong(commandLine.getOptionValue('l').trim()); } ConsumeStatsList consumeStatsList = defaultMQAdminExt.fetchConsumeStatsInBroker(brokerAddr, isOrder, timeoutMillis); System.out.printf("%-32s %-32s %-32s %-4s %-20s %-20s %-20s %s%n", "#Topic", "#Group", "#Broker Name", "#QID", "#Broker Offset", "#Consumer Offset", "#Diff", "#LastTime"); for (Map<String, List<ConsumeStats>> map : consumeStatsList.getConsumeStatsList()) { for (Map.Entry<String, List<ConsumeStats>> entry : map.entrySet()) { String group = entry.getKey(); List<ConsumeStats> consumeStatsArray = entry.getValue(); for (ConsumeStats consumeStats : consumeStatsArray) { List<MessageQueue> mqList = new LinkedList<MessageQueue>(); mqList.addAll(consumeStats.getOffsetTable().keySet()); Collections.sort(mqList); for (MessageQueue mq : mqList) { OffsetWrapper offsetWrapper = consumeStats.getOffsetTable().get(mq); long diff = offsetWrapper.getBrokerOffset() - offsetWrapper.getConsumerOffset(); if (diff < diffLevel) { continue; } String lastTime = "-"; try { lastTime = UtilAll.formatDate(new Date(offsetWrapper.getLastTimestamp()), UtilAll.YYYY_MM_DD_HH_MM_SS); } catch (Exception ignored) { } if (offsetWrapper.getLastTimestamp() > 0) System.out.printf("%-32s %-32s %-32s %-4d %-20d %-20d %-20d %s%n", UtilAll.frontStringAtLeast(mq.getTopic(), 32), group, UtilAll.frontStringAtLeast(mq.getBrokerName(), 32), mq.getQueueId(), offsetWrapper.getBrokerOffset(), offsetWrapper.getConsumerOffset(), diff, lastTime ); } } } } System.out.printf("%nDiff Total: %d%n", consumeStatsList.getTotalDiff()); } catch (Exception e) { throw new SubCommandException(this.getClass().getSimpleName() + " command failed", e); } finally { defaultMQAdminExt.shutdown(); } }
Example #27
Source File: MonitorService.java From rocketmq-all-4.1.0-incubating with Apache License 2.0 | 4 votes |
private void computeUndoneMsgs(final UndoneMsgs undoneMsgs, final ConsumeStats consumeStats) { long total = 0; long singleMax = 0; long delayMax = 0; Iterator<Entry<MessageQueue, OffsetWrapper>> it = consumeStats.getOffsetTable().entrySet().iterator(); while (it.hasNext()) { Entry<MessageQueue, OffsetWrapper> next = it.next(); MessageQueue mq = next.getKey(); OffsetWrapper ow = next.getValue(); long diff = ow.getBrokerOffset() - ow.getConsumerOffset(); if (diff > singleMax) { singleMax = diff; } if (diff > 0) { total += diff; } // Delay if (ow.getLastTimestamp() > 0) { try { long maxOffset = this.defaultMQPullConsumer.maxOffset(mq); if (maxOffset > 0) { PullResult pull = this.defaultMQPullConsumer.pull(mq, "*", maxOffset - 1, 1); switch (pull.getPullStatus()) { case FOUND: long delay = pull.getMsgFoundList().get(0).getStoreTimestamp() - ow.getLastTimestamp(); if (delay > delayMax) { delayMax = delay; } break; case NO_MATCHED_MSG: case NO_NEW_MSG: case OFFSET_ILLEGAL: break; default: break; } } } catch (Exception e) { } } } undoneMsgs.setUndoneMsgsTotal(total); undoneMsgs.setUndoneMsgsSingleMQ(singleMax); undoneMsgs.setUndoneMsgsDelayTimeMills(delayMax); }
Example #28
Source File: QueryMsgByUniqueKeySubCommandTest.java From rocketmq with Apache License 2.0 | 4 votes |
@Before public void before() throws NoSuchFieldException, IllegalAccessException, InterruptedException, RemotingException, MQClientException, MQBrokerException { mQClientAPIImpl = mock(MQClientAPIImpl.class); mQAdminImpl = mock(MQAdminImpl.class); defaultMQAdminExt = new DefaultMQAdminExt(); defaultMQAdminExtImpl = new DefaultMQAdminExtImpl(defaultMQAdminExt, 1000); Field field = DefaultMQAdminExtImpl.class.getDeclaredField("mqClientInstance"); field.setAccessible(true); field.set(defaultMQAdminExtImpl, mqClientInstance); field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl"); field.setAccessible(true); field.set(mqClientInstance, mQClientAPIImpl); field = MQClientInstance.class.getDeclaredField("mQAdminImpl"); field.setAccessible(true); field.set(mqClientInstance, mQAdminImpl); field = DefaultMQAdminExt.class.getDeclaredField("defaultMQAdminExtImpl"); field.setAccessible(true); field.set(defaultMQAdminExt, defaultMQAdminExtImpl); ConsumeMessageDirectlyResult result = new ConsumeMessageDirectlyResult(); result.setConsumeResult(CMResult.CR_SUCCESS); result.setRemark("customRemark_122333444"); when(mQClientAPIImpl.consumeMessageDirectly(anyString(), anyString(), anyString(), anyString(), anyLong())).thenReturn(result); MessageExt retMsgExt = new MessageExt(); retMsgExt.setMsgId("0A3A54F7BF7D18B4AAC28A3FA2CF0000"); retMsgExt.setBody("this is message ext body".getBytes()); retMsgExt.setTopic("testTopic"); retMsgExt.setTags("testTags"); retMsgExt.setStoreHost(new InetSocketAddress("127.0.0.1", 8899)); retMsgExt.setBornHost(new InetSocketAddress("127.0.0.1", 7788)); retMsgExt.setQueueId(1); retMsgExt.setQueueOffset(12L); retMsgExt.setCommitLogOffset(123); retMsgExt.setReconsumeTimes(2); retMsgExt.setBornTimestamp(System.currentTimeMillis()); retMsgExt.setStoreTimestamp(System.currentTimeMillis()); when(mQAdminImpl.viewMessage(anyString())).thenReturn(retMsgExt); when(mQAdminImpl.queryMessageByUniqKey(anyString(), anyString())).thenReturn(retMsgExt); TopicRouteData topicRouteData = new TopicRouteData(); List<BrokerData> brokerDataList = new ArrayList<BrokerData>(); BrokerData brokerData = new BrokerData(); HashMap<Long, String> brokerAddrs = new HashMap<Long, String>(); brokerAddrs.put(MixAll.MASTER_ID, "127.0.0.1:9876"); brokerData.setBrokerAddrs(brokerAddrs); brokerDataList.add(brokerData); topicRouteData.setBrokerDatas(brokerDataList); when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(topicRouteData); GroupList groupList = new GroupList(); HashSet<String> groupSets = new HashSet<String>(); groupSets.add("testGroup"); groupList.setGroupList(groupSets); when(mQClientAPIImpl.queryTopicConsumeByWho(anyString(), anyString(), anyLong())).thenReturn(groupList); ConsumeStats consumeStats = new ConsumeStats(); consumeStats.setConsumeTps(100*10000); HashMap<MessageQueue, OffsetWrapper> offsetTable = new HashMap<MessageQueue, OffsetWrapper>(); MessageQueue messageQueue = new MessageQueue(); messageQueue.setBrokerName("messageQueue BrokerName testing"); messageQueue.setTopic("messageQueue topic"); messageQueue.setQueueId(1); OffsetWrapper offsetWrapper = new OffsetWrapper(); offsetWrapper.setBrokerOffset(100); offsetWrapper.setConsumerOffset(200); offsetWrapper.setLastTimestamp(System.currentTimeMillis()); offsetTable.put(messageQueue, offsetWrapper); consumeStats.setOffsetTable(offsetTable); when(mQClientAPIImpl.getConsumeStats(anyString(), anyString(), (String)isNull(), anyLong())).thenReturn(consumeStats); ClusterInfo clusterInfo = new ClusterInfo(); HashMap<String, BrokerData> brokerAddrTable = new HashMap<String, BrokerData>(); brokerAddrTable.put("key", brokerData); clusterInfo.setBrokerAddrTable(brokerAddrTable); HashMap<String, Set<String>> clusterAddrTable = new HashMap<String, Set<String>>(); Set<String> addrSet = new HashSet<String>(); addrSet.add("127.0.0.1:9876"); clusterAddrTable.put("key", addrSet); clusterInfo.setClusterAddrTable(clusterAddrTable); when(mQClientAPIImpl.getBrokerClusterInfo(anyLong())).thenReturn(clusterInfo); field = QueryMsgByUniqueKeySubCommand.class.getDeclaredField("defaultMQAdminExt"); field.setAccessible(true); field.set(cmd, defaultMQAdminExt); }
Example #29
Source File: MonitorService.java From rocketmq with Apache License 2.0 | 4 votes |
private void computeUndoneMsgs(final UndoneMsgs undoneMsgs, final ConsumeStats consumeStats) { long total = 0; long singleMax = 0; long delayMax = 0; Iterator<Entry<MessageQueue, OffsetWrapper>> it = consumeStats.getOffsetTable().entrySet().iterator(); while (it.hasNext()) { Entry<MessageQueue, OffsetWrapper> next = it.next(); MessageQueue mq = next.getKey(); OffsetWrapper ow = next.getValue(); long diff = ow.getBrokerOffset() - ow.getConsumerOffset(); if (diff > singleMax) { singleMax = diff; } if (diff > 0) { total += diff; } // Delay if (ow.getLastTimestamp() > 0) { try { long maxOffset = this.defaultMQPullConsumer.maxOffset(mq); if (maxOffset > 0) { PullResult pull = this.defaultMQPullConsumer.pull(mq, "*", maxOffset - 1, 1); switch (pull.getPullStatus()) { case FOUND: long delay = pull.getMsgFoundList().get(0).getStoreTimestamp() - ow.getLastTimestamp(); if (delay > delayMax) { delayMax = delay; } break; case NO_MATCHED_MSG: case NO_NEW_MSG: case OFFSET_ILLEGAL: break; default: break; } } } catch (Exception e) { } } } undoneMsgs.setUndoneMsgsTotal(total); undoneMsgs.setUndoneMsgsSingleMQ(singleMax); undoneMsgs.setUndoneMsgsDelayTimeMills(delayMax); }
Example #30
Source File: MonitorServiceTest.java From rocketmq-all-4.1.0-incubating with Apache License 2.0 | 4 votes |
@BeforeClass public static void init() throws NoSuchFieldException, IllegalAccessException, RemotingException, MQClientException, InterruptedException, MQBrokerException { monitorConfig = new MonitorConfig(); monitorListener = new DefaultMonitorListener(); defaultMQPullConsumer = mock(DefaultMQPullConsumer.class); defaultMQPushConsumer = mock(DefaultMQPushConsumer.class); mQClientAPIImpl = mock(MQClientAPIImpl.class); defaultMQAdminExt = new DefaultMQAdminExt(); defaultMQAdminExtImpl = new DefaultMQAdminExtImpl(defaultMQAdminExt, 1000); monitorService = new MonitorService(monitorConfig, monitorListener, null); Field field = DefaultMQAdminExtImpl.class.getDeclaredField("mqClientInstance"); field.setAccessible(true); field.set(defaultMQAdminExtImpl, mqClientInstance); field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl"); field.setAccessible(true); field.set(mqClientInstance, mQClientAPIImpl); field = DefaultMQAdminExt.class.getDeclaredField("defaultMQAdminExtImpl"); field.setAccessible(true); field.set(defaultMQAdminExt, defaultMQAdminExtImpl); field = MonitorService.class.getDeclaredField("defaultMQAdminExt"); field.setAccessible(true); field.set(monitorService, defaultMQAdminExt); field = MonitorService.class.getDeclaredField("defaultMQPullConsumer"); field.setAccessible(true); field.set(monitorService, defaultMQPullConsumer); field = MonitorService.class.getDeclaredField("defaultMQPushConsumer"); field.setAccessible(true); field.set(monitorService, defaultMQPushConsumer); TopicList topicList = new TopicList(); Set<String> topicSet = new HashSet<>(); topicSet.add("topic_one"); topicSet.add("topic_two"); topicList.setTopicList(topicSet); when(mQClientAPIImpl.getTopicListFromNameServer(anyLong())).thenReturn(topicList); TopicRouteData topicRouteData = new TopicRouteData(); List<BrokerData> brokerDatas = new ArrayList<>(); HashMap<Long, String> brokerAddrs = new HashMap<>(); brokerAddrs.put(1234l, "127.0.0.1:10911"); BrokerData brokerData = new BrokerData(); brokerData.setCluster("default-cluster"); brokerData.setBrokerName("default-broker"); brokerData.setBrokerAddrs(brokerAddrs); brokerDatas.add(brokerData); topicRouteData.setBrokerDatas(brokerDatas); topicRouteData.setQueueDatas(new ArrayList<QueueData>()); topicRouteData.setFilterServerTable(new HashMap<String, List<String>>()); when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(topicRouteData); ConsumeStats consumeStats = new ConsumeStats(); consumeStats.setConsumeTps(1234); MessageQueue messageQueue = new MessageQueue(); OffsetWrapper offsetWrapper = new OffsetWrapper(); HashMap<MessageQueue, OffsetWrapper> stats = new HashMap<>(); stats.put(messageQueue, offsetWrapper); consumeStats.setOffsetTable(stats); when(mQClientAPIImpl.getConsumeStats(anyString(), anyString(), anyString(), anyLong())).thenReturn(consumeStats); ConsumerConnection consumerConnection = new ConsumerConnection(); consumerConnection.setConsumeType(ConsumeType.CONSUME_PASSIVELY); consumerConnection.setMessageModel(MessageModel.CLUSTERING); HashSet<Connection> connections = new HashSet<>(); Connection connection = new Connection(); connection.setClientId("client_id"); connection.setClientAddr("127.0.0.1:109111"); connection.setLanguage(LanguageCode.JAVA); connection.setVersion(MQVersion.Version.V4_0_0_SNAPSHOT.ordinal()); connections.add(connection); consumerConnection.setConnectionSet(connections); consumerConnection.setSubscriptionTable(new ConcurrentHashMap<String, SubscriptionData>()); consumerConnection.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); when(mQClientAPIImpl.getConsumerConnectionList(anyString(), anyString(), anyLong())).thenReturn(consumerConnection); ConsumerRunningInfo consumerRunningInfo = new ConsumerRunningInfo(); consumerRunningInfo.setJstack("test"); consumerRunningInfo.setMqTable(new TreeMap<MessageQueue, ProcessQueueInfo>()); consumerRunningInfo.setStatusTable(new TreeMap<String, ConsumeStatus>()); consumerRunningInfo.setSubscriptionSet(new TreeSet<SubscriptionData>()); Properties properties = new Properties(); properties.put(ConsumerRunningInfo.PROP_CONSUME_TYPE, CONSUME_ACTIVELY); properties.put(ConsumerRunningInfo.PROP_CONSUMER_START_TIMESTAMP, System.currentTimeMillis()); consumerRunningInfo.setProperties(properties); when(mQClientAPIImpl.getConsumerRunningInfo(anyString(), anyString(), anyString(), anyBoolean(), anyLong())).thenReturn(consumerRunningInfo); }