mirror of
https://github.com/apache/rocketmq.git
synced 2026-09-24 16:04:00 +08:00
I have already fix my code as suggestion.Please help to review them.[ISSUE #525].
This commit is contained in:
@@ -125,7 +125,6 @@ public class TopicConfigManager extends ConfigManager {
|
||||
this.topicConfigTable.put(topicConfig.getTopicName(), topicConfig);
|
||||
}
|
||||
{
|
||||
// MixAll.RMQ_SYS_TRACK_TRACE_TOPIC
|
||||
if (this.brokerController.getBrokerConfig().isAutoTraceBrokerEnable()) {
|
||||
String topic = MixAll.RMQ_SYS_TRACK_TRACE_TOPIC;
|
||||
TopicConfig topicConfig = new TopicConfig(topic);
|
||||
@@ -165,6 +164,10 @@ public class TopicConfigManager extends ConfigManager {
|
||||
if (topicConfig != null)
|
||||
return topicConfig;
|
||||
|
||||
if (this.brokerController.getBrokerConfig().isAutoTraceBrokerEnable()) {
|
||||
return topicConfig;
|
||||
}
|
||||
|
||||
TopicConfig defaultTopicConfig = this.topicConfigTable.get(defaultTopic);
|
||||
if (defaultTopicConfig != null) {
|
||||
if (defaultTopic.equals(MixAll.AUTO_CREATE_TOPIC_KEY_TOPIC)) {
|
||||
|
||||
+29
-5
@@ -265,7 +265,7 @@ public class DefaultMQPushConsumer extends ClientConfig implements MQPushConsume
|
||||
* Default constructor.
|
||||
*/
|
||||
public DefaultMQPushConsumer() {
|
||||
this(MixAll.DEFAULT_CONSUMER_GROUP, null, new AllocateMessageQueueAveragely(), false);
|
||||
this(MixAll.DEFAULT_CONSUMER_GROUP, null, new AllocateMessageQueueAveragely());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -275,12 +275,26 @@ public class DefaultMQPushConsumer extends ClientConfig implements MQPushConsume
|
||||
* @param rpcHook RPC hook to execute before each remoting command.
|
||||
* @param allocateMessageQueueStrategy message queue allocating algorithm.
|
||||
*/
|
||||
public DefaultMQPushConsumer(final String consumerGroup, RPCHook rpcHook,
|
||||
AllocateMessageQueueStrategy allocateMessageQueueStrategy) {
|
||||
this.consumerGroup = consumerGroup;
|
||||
this.allocateMessageQueueStrategy = allocateMessageQueueStrategy;
|
||||
defaultMQPushConsumerImpl = new DefaultMQPushConsumerImpl(this, rpcHook);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor specifying consumer group, RPC hook and message queue allocating algorithm.
|
||||
*
|
||||
* @param consumerGroup Consume queue.
|
||||
* @param rpcHook RPC hook to execute before each remoting command.
|
||||
* @param allocateMessageQueueStrategy message queue allocating algorithm.
|
||||
* @param msgTraceSwitch switch flag instance for message track trace.
|
||||
*/
|
||||
public DefaultMQPushConsumer(final String consumerGroup, RPCHook rpcHook,
|
||||
AllocateMessageQueueStrategy allocateMessageQueueStrategy, boolean msgTraceSwitch) {
|
||||
this.consumerGroup = consumerGroup;
|
||||
this.allocateMessageQueueStrategy = allocateMessageQueueStrategy;
|
||||
defaultMQPushConsumerImpl = new DefaultMQPushConsumerImpl(this, rpcHook);
|
||||
//if client open the message track trace feature
|
||||
if (msgTraceSwitch) {
|
||||
try {
|
||||
Properties tempProperties = new Properties();
|
||||
@@ -307,7 +321,17 @@ public class DefaultMQPushConsumer extends ClientConfig implements MQPushConsume
|
||||
* @param rpcHook RPC hook to execute before each remoting command.
|
||||
*/
|
||||
public DefaultMQPushConsumer(RPCHook rpcHook) {
|
||||
this(MixAll.DEFAULT_CONSUMER_GROUP, rpcHook, new AllocateMessageQueueAveragely(),false);
|
||||
this(MixAll.DEFAULT_CONSUMER_GROUP, rpcHook, new AllocateMessageQueueAveragely());
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor specifying consumer group.
|
||||
*
|
||||
* @param consumerGroup Consumer group.
|
||||
* @param msgTraceSwitch switch flag instance for message track trace.
|
||||
*/
|
||||
public DefaultMQPushConsumer(final String consumerGroup, boolean msgTraceSwitch) {
|
||||
this(consumerGroup, null, new AllocateMessageQueueAveragely(), msgTraceSwitch);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -315,8 +339,8 @@ public class DefaultMQPushConsumer extends ClientConfig implements MQPushConsume
|
||||
*
|
||||
* @param consumerGroup Consumer group.
|
||||
*/
|
||||
public DefaultMQPushConsumer(final String consumerGroup, boolean msgTraceSwitch) {
|
||||
this(consumerGroup, null, new AllocateMessageQueueAveragely(),msgTraceSwitch);
|
||||
public DefaultMQPushConsumer(final String consumerGroup) {
|
||||
this(consumerGroup, null, new AllocateMessageQueueAveragely());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -144,7 +144,7 @@ public class MQClientInstance {
|
||||
|
||||
this.rebalanceService = new RebalanceService(this);
|
||||
|
||||
this.defaultMQProducer = new DefaultMQProducer(MixAll.CLIENT_INNER_PRODUCER_GROUP,false);
|
||||
this.defaultMQProducer = new DefaultMQProducer(MixAll.CLIENT_INNER_PRODUCER_GROUP);
|
||||
this.defaultMQProducer.resetClientConfig(clientConfig);
|
||||
|
||||
this.consumerStatsManager = new ConsumerStatsManager(this.scheduledExecutorService);
|
||||
|
||||
@@ -146,7 +146,18 @@ public class DefaultMQProducer extends ClientConfig implements MQProducer {
|
||||
*
|
||||
* @param producerGroup Producer group, see the name-sake field.
|
||||
* @param rpcHook RPC hook to execute per each remoting command execution.
|
||||
* @param msgTraceSwitch switch flag instance for message track trace
|
||||
*/
|
||||
public DefaultMQProducer(final String producerGroup, RPCHook rpcHook) {
|
||||
this.producerGroup = producerGroup;
|
||||
defaultMQProducerImpl = new DefaultMQProducerImpl(this, rpcHook);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor specifying both producer group and RPC hook.
|
||||
*
|
||||
* @param producerGroup Producer group, see the name-sake field.
|
||||
* @param rpcHook RPC hook to execute per each remoting command execution.
|
||||
* @param msgTraceSwitch switch flag instance for message track trace.
|
||||
*/
|
||||
public DefaultMQProducer(final String producerGroup, RPCHook rpcHook, boolean msgTraceSwitch) {
|
||||
this.producerGroup = producerGroup;
|
||||
@@ -177,8 +188,18 @@ public class DefaultMQProducer extends ClientConfig implements MQProducer {
|
||||
*
|
||||
* @param producerGroup Producer group, see the name-sake field.
|
||||
*/
|
||||
public DefaultMQProducer(final String producerGroup) {
|
||||
this(producerGroup, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor specifying producer group.
|
||||
*
|
||||
* @param producerGroup Producer group, see the name-sake field.
|
||||
* @param msgTraceSwitch switch flag instance for message track trace.
|
||||
*/
|
||||
public DefaultMQProducer(final String producerGroup, boolean msgTraceSwitch) {
|
||||
this(producerGroup, null,msgTraceSwitch);
|
||||
this(producerGroup, null, msgTraceSwitch);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -187,7 +208,7 @@ public class DefaultMQProducer extends ClientConfig implements MQProducer {
|
||||
* @param rpcHook RPC hook to execute per each remoting command execution.
|
||||
*/
|
||||
public DefaultMQProducer(RPCHook rpcHook) {
|
||||
this(MixAll.DEFAULT_PRODUCER_GROUP, rpcHook,false);
|
||||
this(MixAll.DEFAULT_PRODUCER_GROUP, rpcHook);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -35,11 +35,11 @@ public class TransactionMQProducer extends DefaultMQProducer {
|
||||
}
|
||||
|
||||
public TransactionMQProducer(final String producerGroup) {
|
||||
super(producerGroup,false);
|
||||
super(producerGroup);
|
||||
}
|
||||
|
||||
public TransactionMQProducer(final String producerGroup, RPCHook rpcHook) {
|
||||
super(producerGroup, rpcHook,false);
|
||||
super(producerGroup, rpcHook);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
-105
@@ -1,105 +0,0 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.rocketmq.client.trace.core.Utils;
|
||||
|
||||
import org.apache.rocketmq.remoting.protocol.RemotingSerializable;
|
||||
|
||||
import java.net.Inet6Address;
|
||||
import java.net.InetAddress;
|
||||
import java.net.NetworkInterface;
|
||||
import java.net.SocketException;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
|
||||
/**
|
||||
* Track Trace Util
|
||||
*/
|
||||
public class TrackTraceUtils {
|
||||
|
||||
public static String getLocalAddress() {
|
||||
try {
|
||||
//Traverse the network bind card to find a valid IP address and return it.
|
||||
Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces();
|
||||
ArrayList<String> ipv4Result = new ArrayList<String>();
|
||||
ArrayList<String> ipv6Result = new ArrayList<String>();
|
||||
while (enumeration.hasMoreElements()) {
|
||||
final NetworkInterface networkInterface = enumeration.nextElement();
|
||||
final Enumeration<InetAddress> en = networkInterface.getInetAddresses();
|
||||
while (en.hasMoreElements()) {
|
||||
final InetAddress address = en.nextElement();
|
||||
if (!address.isLoopbackAddress()) {
|
||||
if (address instanceof Inet6Address) {
|
||||
ipv6Result.add(normalizeHostAddress(address));
|
||||
} else {
|
||||
ipv4Result.add(normalizeHostAddress(address));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// get priority to IPv4
|
||||
if (!ipv4Result.isEmpty()) {
|
||||
for (String ip : ipv4Result) {
|
||||
if (ip.startsWith("127.0") || ip.startsWith("192.168")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
return ip;
|
||||
}
|
||||
|
||||
//get the last one
|
||||
return ipv4Result.get(ipv4Result.size() - 1);
|
||||
}
|
||||
//then use the ipv6 address
|
||||
else if (!ipv6Result.isEmpty()) {
|
||||
return ipv6Result.get(0);
|
||||
}
|
||||
//the use local ip address
|
||||
final InetAddress localHost = InetAddress.getLocalHost();
|
||||
return normalizeHostAddress(localHost);
|
||||
} catch (SocketException e) {
|
||||
e.printStackTrace();
|
||||
} catch (UnknownHostException e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String normalizeHostAddress(final InetAddress localHost) {
|
||||
if (localHost instanceof Inet6Address) {
|
||||
return "[" + localHost.getHostAddress() + "]";
|
||||
} else {
|
||||
return localHost.getHostAddress();
|
||||
}
|
||||
}
|
||||
|
||||
public static String toJson(final Object obj, boolean prettyFormat) {
|
||||
return RemotingSerializable.toJson(obj, prettyFormat);
|
||||
}
|
||||
|
||||
public static <T> T fromJson(String json, Class<T> classOfT) {
|
||||
return RemotingSerializable.fromJson(json, classOfT);
|
||||
}
|
||||
|
||||
public static String replaceNull(String ori) {
|
||||
return ori == null ? "" : ori;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -16,11 +16,11 @@
|
||||
*/
|
||||
package org.apache.rocketmq.client.trace.core.common;
|
||||
|
||||
import org.apache.rocketmq.client.trace.core.Utils.TrackTraceUtils;
|
||||
import org.apache.rocketmq.common.UtilAll;
|
||||
import org.apache.rocketmq.common.message.MessageType;
|
||||
|
||||
public class TrackTraceBean {
|
||||
private static final String LOCAL_ADDRESS = TrackTraceUtils.getLocalAddress();
|
||||
private static final String LOCAL_ADDRESS = UtilAll.ipToIPv4Str(UtilAll.getIP());
|
||||
private String topic = "";
|
||||
private String msgId = "";
|
||||
private String offsetMsgId = "";
|
||||
|
||||
@@ -16,9 +16,6 @@
|
||||
*/
|
||||
package org.apache.rocketmq.client.trace.core.common;
|
||||
|
||||
/**
|
||||
* Created by zongtanghu on 2018/11/6.
|
||||
*/
|
||||
public enum TrackTraceType {
|
||||
Pub,
|
||||
SubBefore,
|
||||
|
||||
+2
-2
@@ -89,7 +89,7 @@ public class DefaultMQPushConsumerTest {
|
||||
@Before
|
||||
public void init() throws Exception {
|
||||
consumerGroup = "FooBarGroup" + System.currentTimeMillis();
|
||||
pushConsumer = new DefaultMQPushConsumer(consumerGroup,false);
|
||||
pushConsumer = new DefaultMQPushConsumer(consumerGroup);
|
||||
pushConsumer.setNamesrvAddr("127.0.0.1:9876");
|
||||
pushConsumer.setPullInterval(60 * 1000);
|
||||
|
||||
@@ -252,7 +252,7 @@ public class DefaultMQPushConsumerTest {
|
||||
}
|
||||
|
||||
private DefaultMQPushConsumer createPushConsumer() {
|
||||
DefaultMQPushConsumer pushConsumer = new DefaultMQPushConsumer(consumerGroup,false);
|
||||
DefaultMQPushConsumer pushConsumer = new DefaultMQPushConsumer(consumerGroup);
|
||||
pushConsumer.registerMessageListener(new MessageListenerConcurrently() {
|
||||
@Override
|
||||
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ public class DefaultMQPushConsumerImplTest {
|
||||
//test message
|
||||
thrown.expectMessage("consumeThreadMin (10) is larger than consumeThreadMax (9)");
|
||||
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("test_consumer_group",false);
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("test_consumer_group");
|
||||
|
||||
consumer.setConsumeThreadMin(10);
|
||||
consumer.setConsumeThreadMax(9);
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ import static org.mockito.Mockito.when;
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class RebalancePushImplTest {
|
||||
@Spy
|
||||
private DefaultMQPushConsumerImpl defaultMQPushConsumer = new DefaultMQPushConsumerImpl(new DefaultMQPushConsumer("RebalancePushImplTest",false), null);
|
||||
private DefaultMQPushConsumerImpl defaultMQPushConsumer = new DefaultMQPushConsumerImpl(new DefaultMQPushConsumer("RebalancePushImplTest"), null);
|
||||
@Mock
|
||||
private MQClientInstance mqClientInstance;
|
||||
@Mock
|
||||
|
||||
@@ -82,7 +82,7 @@ public class DefaultMQProducerTest {
|
||||
@Before
|
||||
public void init() throws Exception {
|
||||
String producerGroupTemp = producerGroupPrefix + System.currentTimeMillis();
|
||||
producer = new DefaultMQProducer(producerGroupTemp,false);
|
||||
producer = new DefaultMQProducer(producerGroupTemp);
|
||||
producer.setNamesrvAddr("127.0.0.1:9876");
|
||||
producer.setCompressMsgBodyOverHowmuch(16);
|
||||
message = new Message(topic, new byte[] {'a'});
|
||||
@@ -309,7 +309,7 @@ public class DefaultMQProducerTest {
|
||||
@Test
|
||||
public void testSetCallbackExecutor() throws MQClientException {
|
||||
String producerGroupTemp = "testSetCallbackExecutor_" + System.currentTimeMillis();
|
||||
producer = new DefaultMQProducer(producerGroupTemp,false);
|
||||
producer = new DefaultMQProducer(producerGroupTemp);
|
||||
producer.setNamesrvAddr("127.0.0.1:9876");
|
||||
producer.start();
|
||||
|
||||
|
||||
+313
@@ -0,0 +1,313 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.rocketmq.client.trace;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.lang.reflect.Field;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
|
||||
import org.apache.rocketmq.client.consumer.PullCallback;
|
||||
import org.apache.rocketmq.client.consumer.PullResult;
|
||||
import org.apache.rocketmq.client.consumer.PullStatus;
|
||||
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
|
||||
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
|
||||
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
|
||||
import org.apache.rocketmq.client.exception.MQBrokerException;
|
||||
import org.apache.rocketmq.client.exception.MQClientException;
|
||||
import org.apache.rocketmq.client.impl.CommunicationMode;
|
||||
import org.apache.rocketmq.client.impl.FindBrokerResult;
|
||||
import org.apache.rocketmq.client.impl.MQClientAPIImpl;
|
||||
import org.apache.rocketmq.client.impl.consumer.ConsumeMessageConcurrentlyService;
|
||||
import org.apache.rocketmq.client.impl.consumer.DefaultMQPushConsumerImpl;
|
||||
import org.apache.rocketmq.client.impl.consumer.ProcessQueue;
|
||||
import org.apache.rocketmq.client.impl.consumer.PullAPIWrapper;
|
||||
import org.apache.rocketmq.client.impl.consumer.PullMessageService;
|
||||
import org.apache.rocketmq.client.impl.consumer.PullRequest;
|
||||
import org.apache.rocketmq.client.impl.consumer.PullResultExt;
|
||||
import org.apache.rocketmq.client.impl.consumer.RebalancePushImpl;
|
||||
import org.apache.rocketmq.client.impl.factory.MQClientInstance;
|
||||
import org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl;
|
||||
import org.apache.rocketmq.client.producer.DefaultMQProducer;
|
||||
import org.apache.rocketmq.client.producer.SendResult;
|
||||
import org.apache.rocketmq.client.producer.SendStatus;
|
||||
import org.apache.rocketmq.client.trace.core.dispatch.impl.AsyncArrayDispatcher;
|
||||
import org.apache.rocketmq.common.MixAll;
|
||||
import org.apache.rocketmq.common.message.MessageClientExt;
|
||||
import org.apache.rocketmq.common.message.MessageDecoder;
|
||||
import org.apache.rocketmq.common.message.MessageExt;
|
||||
import org.apache.rocketmq.common.message.MessageQueue;
|
||||
import org.apache.rocketmq.common.protocol.header.PullMessageRequestHeader;
|
||||
|
||||
import org.apache.rocketmq.common.protocol.route.BrokerData;
|
||||
import org.apache.rocketmq.common.protocol.route.QueueData;
|
||||
import org.apache.rocketmq.common.protocol.route.TopicRouteData;
|
||||
import org.apache.rocketmq.remoting.exception.RemotingException;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.invocation.InvocationOnMock;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
import org.mockito.stubbing.Answer;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.nullable;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class DefaultMQConsumerWithTraceTest {
|
||||
private String consumerGroup;
|
||||
private String consumerGroupNormal;
|
||||
private String producerGroupTraceTemp = MixAll.RMQ_SYS_TRACK_TRACE_TOPIC + System.currentTimeMillis();
|
||||
|
||||
private String topic = "FooBar";
|
||||
private String brokerName = "BrokerA";
|
||||
private MQClientInstance mQClientFactory;
|
||||
|
||||
@Mock
|
||||
private MQClientAPIImpl mQClientAPIImpl;
|
||||
private PullAPIWrapper pullAPIWrapper;
|
||||
private RebalancePushImpl rebalancePushImpl;
|
||||
private DefaultMQPushConsumer pushConsumer;
|
||||
private DefaultMQPushConsumer normalPushConsumer;
|
||||
|
||||
private AsyncArrayDispatcher asyncArrayDispatcher;
|
||||
private MQClientInstance mQClientTraceFactory;
|
||||
@Mock
|
||||
private MQClientAPIImpl mQClientTraceAPIImpl;
|
||||
private DefaultMQProducer traceProducer;
|
||||
|
||||
|
||||
@Before
|
||||
public void init() throws Exception {
|
||||
consumerGroup = "FooBarGroup" + System.currentTimeMillis();
|
||||
pushConsumer = new DefaultMQPushConsumer(consumerGroup,true);
|
||||
consumerGroupNormal = "FooBarGroup" + System.currentTimeMillis();
|
||||
normalPushConsumer = new DefaultMQPushConsumer(consumerGroupNormal,false);
|
||||
|
||||
pushConsumer.setNamesrvAddr("127.0.0.1:9876");
|
||||
pushConsumer.setPullInterval(60 * 1000);
|
||||
|
||||
asyncArrayDispatcher = (AsyncArrayDispatcher)pushConsumer.getTraceDispatcher();
|
||||
traceProducer = asyncArrayDispatcher.getTraceProducer();
|
||||
|
||||
|
||||
pushConsumer.registerMessageListener(new MessageListenerConcurrently() {
|
||||
@Override
|
||||
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
|
||||
ConsumeConcurrentlyContext context) {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
DefaultMQPushConsumerImpl pushConsumerImpl = pushConsumer.getDefaultMQPushConsumerImpl();
|
||||
rebalancePushImpl = spy(new RebalancePushImpl(pushConsumer.getDefaultMQPushConsumerImpl()));
|
||||
Field field = DefaultMQPushConsumerImpl.class.getDeclaredField("rebalanceImpl");
|
||||
field.setAccessible(true);
|
||||
field.set(pushConsumerImpl, rebalancePushImpl);
|
||||
pushConsumer.subscribe(topic, "*");
|
||||
pushConsumer.start();
|
||||
|
||||
mQClientFactory = spy(pushConsumerImpl.getmQClientFactory());
|
||||
mQClientTraceFactory = spy(pushConsumerImpl.getmQClientFactory());
|
||||
|
||||
field = DefaultMQPushConsumerImpl.class.getDeclaredField("mQClientFactory");
|
||||
field.setAccessible(true);
|
||||
field.set(pushConsumerImpl, mQClientFactory);
|
||||
|
||||
field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl");
|
||||
field.setAccessible(true);
|
||||
field.set(mQClientFactory, mQClientAPIImpl);
|
||||
|
||||
Field fieldTrace = DefaultMQProducerImpl.class.getDeclaredField("mQClientFactory");
|
||||
fieldTrace.setAccessible(true);
|
||||
fieldTrace.set(traceProducer.getDefaultMQProducerImpl(), mQClientTraceFactory);
|
||||
|
||||
fieldTrace = MQClientInstance.class.getDeclaredField("mQClientAPIImpl");
|
||||
fieldTrace.setAccessible(true);
|
||||
fieldTrace.set(mQClientTraceFactory, mQClientTraceAPIImpl);
|
||||
|
||||
pullAPIWrapper = spy(new PullAPIWrapper(mQClientFactory, consumerGroup, false));
|
||||
field = DefaultMQPushConsumerImpl.class.getDeclaredField("pullAPIWrapper");
|
||||
field.setAccessible(true);
|
||||
field.set(pushConsumerImpl, pullAPIWrapper);
|
||||
|
||||
pushConsumer.getDefaultMQPushConsumerImpl().getRebalanceImpl().setmQClientFactory(mQClientFactory);
|
||||
mQClientFactory.registerConsumer(consumerGroup, pushConsumerImpl);
|
||||
|
||||
when(mQClientFactory.getMQClientAPIImpl().pullMessage(anyString(), any(PullMessageRequestHeader.class),
|
||||
anyLong(), any(CommunicationMode.class), nullable(PullCallback.class)))
|
||||
.thenAnswer(new Answer<Object>() {
|
||||
@Override
|
||||
public Object answer(InvocationOnMock mock) throws Throwable {
|
||||
PullMessageRequestHeader requestHeader = mock.getArgument(1);
|
||||
MessageClientExt messageClientExt = new MessageClientExt();
|
||||
messageClientExt.setTopic(topic);
|
||||
messageClientExt.setQueueId(0);
|
||||
messageClientExt.setMsgId("123");
|
||||
messageClientExt.setBody(new byte[] {'a'});
|
||||
messageClientExt.setOffsetMsgId("234");
|
||||
messageClientExt.setBornHost(new InetSocketAddress(8080));
|
||||
messageClientExt.setStoreHost(new InetSocketAddress(8080));
|
||||
PullResult pullResult = createPullResult(requestHeader, PullStatus.FOUND, Collections.<MessageExt>singletonList(messageClientExt));
|
||||
((PullCallback) mock.getArgument(4)).onSuccess(pullResult);
|
||||
return pullResult;
|
||||
}
|
||||
});
|
||||
|
||||
doReturn(new FindBrokerResult("127.0.0.1:10911", false)).when(mQClientFactory).findBrokerAddressInSubscribe(anyString(), anyLong(), anyBoolean());
|
||||
Set<MessageQueue> messageQueueSet = new HashSet<MessageQueue>();
|
||||
messageQueueSet.add(createPullRequest().getMessageQueue());
|
||||
pushConsumer.getDefaultMQPushConsumerImpl().updateTopicSubscribeInfo(topic, messageQueueSet);
|
||||
}
|
||||
|
||||
@After
|
||||
public void terminate() {
|
||||
pushConsumer.shutdown();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPullMessage_WithTrace_Success() throws InterruptedException, RemotingException, MQBrokerException, MQClientException {
|
||||
traceProducer.getDefaultMQProducerImpl().getmQClientFactory().registerProducer(producerGroupTraceTemp, traceProducer.getDefaultMQProducerImpl());
|
||||
//when(mQClientAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(createTopicRoute());
|
||||
//when(mQClientTraceAPIImpl.getTopicRouteInfoFromNameServer(anyString(), anyLong())).thenReturn(createTraceTopicRoute());
|
||||
|
||||
|
||||
final CountDownLatch countDownLatch = new CountDownLatch(1);
|
||||
final MessageExt[] messageExts = new MessageExt[1];
|
||||
pushConsumer.getDefaultMQPushConsumerImpl().setConsumeMessageService(new ConsumeMessageConcurrentlyService(pushConsumer.getDefaultMQPushConsumerImpl(), new MessageListenerConcurrently() {
|
||||
@Override
|
||||
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
|
||||
ConsumeConcurrentlyContext context) {
|
||||
messageExts[0] = msgs.get(0);
|
||||
countDownLatch.countDown();
|
||||
return null;
|
||||
}
|
||||
}));
|
||||
|
||||
PullMessageService pullMessageService = mQClientFactory.getPullMessageService();
|
||||
pullMessageService.executePullRequestImmediately(createPullRequest());
|
||||
countDownLatch.await(3000L, TimeUnit.MILLISECONDS);
|
||||
assertThat(messageExts[0].getTopic()).isEqualTo(topic);
|
||||
assertThat(messageExts[0].getBody()).isEqualTo(new byte[] {'a'});
|
||||
}
|
||||
|
||||
private PullRequest createPullRequest() {
|
||||
PullRequest pullRequest = new PullRequest();
|
||||
pullRequest.setConsumerGroup(consumerGroup);
|
||||
pullRequest.setNextOffset(1024);
|
||||
|
||||
MessageQueue messageQueue = new MessageQueue();
|
||||
messageQueue.setBrokerName(brokerName);
|
||||
messageQueue.setQueueId(0);
|
||||
messageQueue.setTopic(topic);
|
||||
pullRequest.setMessageQueue(messageQueue);
|
||||
ProcessQueue processQueue = new ProcessQueue();
|
||||
processQueue.setLocked(true);
|
||||
processQueue.setLastLockTimestamp(System.currentTimeMillis());
|
||||
pullRequest.setProcessQueue(processQueue);
|
||||
|
||||
return pullRequest;
|
||||
}
|
||||
|
||||
private PullResultExt createPullResult(PullMessageRequestHeader requestHeader, PullStatus pullStatus,
|
||||
List<MessageExt> messageExtList) throws Exception {
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
for (MessageExt messageExt : messageExtList) {
|
||||
outputStream.write(MessageDecoder.encode(messageExt, false));
|
||||
}
|
||||
return new PullResultExt(pullStatus, requestHeader.getQueueOffset() + messageExtList.size(), 123, 2048, messageExtList, 0, outputStream.toByteArray());
|
||||
}
|
||||
|
||||
public static TopicRouteData createTopicRoute() {
|
||||
TopicRouteData topicRouteData = new TopicRouteData();
|
||||
|
||||
topicRouteData.setFilterServerTable(new HashMap<String, List<String>>());
|
||||
List<BrokerData> brokerDataList = new ArrayList<BrokerData>();
|
||||
BrokerData brokerData = new BrokerData();
|
||||
brokerData.setBrokerName("BrokerA");
|
||||
brokerData.setCluster("DefaultCluster");
|
||||
HashMap<Long, String> brokerAddrs = new HashMap<Long, String>();
|
||||
brokerAddrs.put(0L, "127.0.0.1:10911");
|
||||
brokerData.setBrokerAddrs(brokerAddrs);
|
||||
brokerDataList.add(brokerData);
|
||||
topicRouteData.setBrokerDatas(brokerDataList);
|
||||
|
||||
List<QueueData> queueDataList = new ArrayList<QueueData>();
|
||||
QueueData queueData = new QueueData();
|
||||
queueData.setBrokerName("BrokerA");
|
||||
queueData.setPerm(6);
|
||||
queueData.setReadQueueNums(3);
|
||||
queueData.setWriteQueueNums(4);
|
||||
queueData.setTopicSynFlag(0);
|
||||
queueDataList.add(queueData);
|
||||
topicRouteData.setQueueDatas(queueDataList);
|
||||
return topicRouteData;
|
||||
}
|
||||
|
||||
private SendResult createSendResult(SendStatus sendStatus) {
|
||||
SendResult sendResult = new SendResult();
|
||||
sendResult.setMsgId("123");
|
||||
sendResult.setOffsetMsgId("123");
|
||||
sendResult.setQueueOffset(456);
|
||||
sendResult.setSendStatus(sendStatus);
|
||||
sendResult.setRegionId("HZ");
|
||||
return sendResult;
|
||||
}
|
||||
|
||||
public static TopicRouteData createTraceTopicRoute() {
|
||||
TopicRouteData topicRouteData = new TopicRouteData();
|
||||
|
||||
topicRouteData.setFilterServerTable(new HashMap<String, List<String>>());
|
||||
List<BrokerData> brokerDataList = new ArrayList<BrokerData>();
|
||||
BrokerData brokerData = new BrokerData();
|
||||
brokerData.setBrokerName("broker-trace");
|
||||
brokerData.setCluster("DefaultCluster");
|
||||
HashMap<Long, String> brokerAddrs = new HashMap<Long, String>();
|
||||
brokerAddrs.put(0L, "127.0.0.1:10912");
|
||||
brokerData.setBrokerAddrs(brokerAddrs);
|
||||
brokerDataList.add(brokerData);
|
||||
topicRouteData.setBrokerDatas(brokerDataList);
|
||||
|
||||
List<QueueData> queueDataList = new ArrayList<QueueData>();
|
||||
QueueData queueData = new QueueData();
|
||||
queueData.setBrokerName("broker-trace");
|
||||
queueData.setPerm(6);
|
||||
queueData.setReadQueueNums(1);
|
||||
queueData.setWriteQueueNums(1);
|
||||
queueData.setTopicSynFlag(1);
|
||||
queueDataList.add(queueData);
|
||||
topicRouteData.setQueueDatas(queueDataList);
|
||||
return topicRouteData;
|
||||
}
|
||||
}
|
||||
+5
-19
@@ -22,10 +22,7 @@ import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import net.bytebuddy.asm.Advice;
|
||||
import org.apache.rocketmq.client.ClientConfig;
|
||||
import org.apache.rocketmq.client.exception.MQBrokerException;
|
||||
import org.apache.rocketmq.client.exception.MQClientException;
|
||||
@@ -48,7 +45,6 @@ import org.apache.rocketmq.common.protocol.route.BrokerData;
|
||||
import org.apache.rocketmq.common.protocol.route.QueueData;
|
||||
import org.apache.rocketmq.common.protocol.route.TopicRouteData;
|
||||
import org.apache.rocketmq.remoting.exception.RemotingException;
|
||||
import org.apache.rocketmq.remoting.netty.NettyRemotingClient;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -57,11 +53,9 @@ import org.mockito.Mock;
|
||||
import org.mockito.Spy;
|
||||
import org.mockito.junit.MockitoJUnitRunner;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.anyObject;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.ArgumentMatchers.nullable;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -83,6 +77,7 @@ public class DefaultMQProducerWithTraceTest {
|
||||
|
||||
private DefaultMQProducer producer;
|
||||
private DefaultMQProducer traceProducer;
|
||||
private DefaultMQProducer normalProducer;
|
||||
|
||||
private Message message;
|
||||
private String topic = "FooBar";
|
||||
@@ -93,21 +88,23 @@ public class DefaultMQProducerWithTraceTest {
|
||||
@Before
|
||||
public void init() throws Exception {
|
||||
|
||||
normalProducer = new DefaultMQProducer(producerGroupTemp,false);
|
||||
producer = new DefaultMQProducer(producerGroupTemp,true);
|
||||
producer.setNamesrvAddr("127.0.0.1:9876");
|
||||
normalProducer.setNamesrvAddr("127.0.0.1:9877");
|
||||
message = new Message(topic, new byte[] {'a', 'b' ,'c'});
|
||||
asyncArrayDispatcher = (AsyncArrayDispatcher)producer.getTraceDispatcher();
|
||||
traceProducer = asyncArrayDispatcher.getTraceProducer();
|
||||
|
||||
producer.start();
|
||||
|
||||
|
||||
Field field = DefaultMQProducerImpl.class.getDeclaredField("mQClientFactory");
|
||||
field.setAccessible(true);
|
||||
field.set(producer.getDefaultMQProducerImpl(), mQClientFactory);
|
||||
|
||||
Field fieldTrace = DefaultMQProducerImpl.class.getDeclaredField("mQClientFactory");
|
||||
fieldTrace.setAccessible(true);
|
||||
field.set(traceProducer.getDefaultMQProducerImpl(), mQClientTraceFactory);
|
||||
fieldTrace.set(traceProducer.getDefaultMQProducerImpl(), mQClientTraceFactory);
|
||||
|
||||
field = MQClientInstance.class.getDeclaredField("mQClientAPIImpl");
|
||||
field.setAccessible(true);
|
||||
@@ -220,15 +217,4 @@ public class DefaultMQProducerWithTraceTest {
|
||||
topicRouteData.setQueueDatas(queueDataList);
|
||||
return topicRouteData;
|
||||
}
|
||||
|
||||
private SendResult createSendTraceResult(SendStatus sendStatus) {
|
||||
SendResult sendResult = new SendResult();
|
||||
sendResult.setMsgId("456");
|
||||
sendResult.setOffsetMsgId("456");
|
||||
sendResult.setQueueOffset(789);
|
||||
sendResult.setSendStatus(sendStatus);
|
||||
sendResult.setRegionId("HZ");
|
||||
return sendResult;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ import org.apache.rocketmq.common.message.Message;
|
||||
public class SimpleBatchProducer {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
DefaultMQProducer producer = new DefaultMQProducer("BatchProducerGroupName",false);
|
||||
DefaultMQProducer producer = new DefaultMQProducer("BatchProducerGroupName");
|
||||
producer.start();
|
||||
|
||||
//If you just send messages of no more than 1MiB at a time, it is easy to use batch
|
||||
|
||||
@@ -28,7 +28,7 @@ public class SplitBatchProducer {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
|
||||
DefaultMQProducer producer = new DefaultMQProducer("BatchProducerGroupName",false);
|
||||
DefaultMQProducer producer = new DefaultMQProducer("BatchProducerGroupName");
|
||||
producer.start();
|
||||
|
||||
//large batch
|
||||
|
||||
@@ -102,7 +102,7 @@ public class Consumer {
|
||||
}
|
||||
}, 10000, 10000);
|
||||
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(group,false);
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(group);
|
||||
consumer.setInstanceName(Long.toString(System.currentTimeMillis()));
|
||||
|
||||
if (filterType == null || expression == null) {
|
||||
|
||||
@@ -100,7 +100,7 @@ public class Producer {
|
||||
}
|
||||
}, 10000, 10000);
|
||||
|
||||
final DefaultMQProducer producer = new DefaultMQProducer("benchmark_producer",false);
|
||||
final DefaultMQProducer producer = new DefaultMQProducer("benchmark_producer");
|
||||
producer.setInstanceName(Long.toString(System.currentTimeMillis()));
|
||||
|
||||
if (commandLine.hasOption('n')) {
|
||||
|
||||
@@ -29,7 +29,7 @@ import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
|
||||
public class PushConsumer {
|
||||
|
||||
public static void main(String[] args) throws InterruptedException, MQClientException {
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_1",false);
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_1");
|
||||
|
||||
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.apache.rocketmq.common.message.MessageExt;
|
||||
public class Consumer {
|
||||
|
||||
public static void main(String[] args) throws InterruptedException, MQClientException, IOException {
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ConsumerGroupNamecc4",false);
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ConsumerGroupNamecc4");
|
||||
|
||||
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
||||
File classFile = new File(classLoader.getResource("MessageFilterImpl.java").getFile());
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.apache.rocketmq.remoting.common.RemotingHelper;
|
||||
|
||||
public class Producer {
|
||||
public static void main(String[] args) throws MQClientException, InterruptedException {
|
||||
DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName",false);
|
||||
DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName");
|
||||
producer.start();
|
||||
|
||||
try {
|
||||
|
||||
@@ -30,7 +30,7 @@ import java.util.List;
|
||||
public class SqlConsumer {
|
||||
|
||||
public static void main(String[] args) {
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_4",false);
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_4");
|
||||
try {
|
||||
consumer.subscribe("TopicTest",
|
||||
MessageSelector.bySql("(TAGS is not null and TAGS in ('TagA', 'TagB'))" +
|
||||
|
||||
@@ -26,7 +26,7 @@ import org.apache.rocketmq.remoting.common.RemotingHelper;
|
||||
public class SqlProducer {
|
||||
|
||||
public static void main(String[] args) {
|
||||
DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name",false);
|
||||
DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
|
||||
try {
|
||||
producer.start();
|
||||
} catch (MQClientException e) {
|
||||
|
||||
@@ -41,7 +41,7 @@ public class Consumer {
|
||||
String subscription = commandLine.getOptionValue('s');
|
||||
final String returnFailedHalf = commandLine.getOptionValue('f');
|
||||
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(group,false);
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(group);
|
||||
consumer.setInstanceName(Long.toString(System.currentTimeMillis()));
|
||||
|
||||
consumer.subscribe(topic, subscription);
|
||||
|
||||
@@ -39,7 +39,7 @@ public class Producer {
|
||||
String keys = commandLine.getOptionValue('k');
|
||||
String msgCount = commandLine.getOptionValue('c');
|
||||
|
||||
DefaultMQProducer producer = new DefaultMQProducer(group,false);
|
||||
DefaultMQProducer producer = new DefaultMQProducer(group);
|
||||
producer.setInstanceName(Long.toString(System.currentTimeMillis()));
|
||||
|
||||
producer.start();
|
||||
|
||||
@@ -29,7 +29,7 @@ import org.apache.rocketmq.common.message.MessageExt;
|
||||
public class Consumer {
|
||||
|
||||
public static void main(String[] args) throws MQClientException {
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_3",false);
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_3");
|
||||
|
||||
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ import org.apache.rocketmq.remoting.exception.RemotingException;
|
||||
public class Producer {
|
||||
public static void main(String[] args) throws UnsupportedEncodingException {
|
||||
try {
|
||||
MQProducer producer = new DefaultMQProducer("please_rename_unique_group_name",false);
|
||||
MQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
|
||||
producer.start();
|
||||
|
||||
String[] tags = new String[] {"TagA", "TagB", "TagC", "TagD", "TagE"};
|
||||
|
||||
@@ -35,7 +35,7 @@ public class Consumer {
|
||||
/*
|
||||
* Instantiate with specified consumer group name.
|
||||
*/
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_4",false);
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("please_rename_unique_group_name_4");
|
||||
|
||||
/*
|
||||
* Specify name server addresses.
|
||||
|
||||
@@ -31,7 +31,7 @@ public class Producer {
|
||||
/*
|
||||
* Instantiate with a producer group name.
|
||||
*/
|
||||
DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name",false);
|
||||
DefaultMQProducer producer = new DefaultMQProducer("please_rename_unique_group_name");
|
||||
|
||||
/*
|
||||
* Specify name server addresses.
|
||||
|
||||
@@ -30,7 +30,7 @@ public class AsyncProducer {
|
||||
public static void main(
|
||||
String[] args) throws MQClientException, InterruptedException, UnsupportedEncodingException {
|
||||
|
||||
DefaultMQProducer producer = new DefaultMQProducer("Jodie_Daily_test",false);
|
||||
DefaultMQProducer producer = new DefaultMQProducer("Jodie_Daily_test");
|
||||
producer.start();
|
||||
producer.setRetryTimesWhenSendAsyncFailed(0);
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ import org.apache.rocketmq.remoting.common.RemotingHelper;
|
||||
public class Producer {
|
||||
public static void main(String[] args) throws MQClientException, InterruptedException {
|
||||
|
||||
DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName",true);
|
||||
DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName");
|
||||
producer.start();
|
||||
|
||||
for (int i = 0; i < 128; i++)
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.apache.rocketmq.common.message.MessageExt;
|
||||
public class PushConsumer {
|
||||
|
||||
public static void main(String[] args) throws InterruptedException, MQClientException {
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("CID_JODIE_1",true);
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("CID_JODIE_1");
|
||||
consumer.subscribe("TopicTest", "*");
|
||||
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
|
||||
//wrong time format 2017_0422_221800
|
||||
|
||||
@@ -26,7 +26,7 @@ import org.apache.rocketmq.remoting.common.RemotingHelper;
|
||||
|
||||
public class TestProducer {
|
||||
public static void main(String[] args) throws MQClientException, InterruptedException {
|
||||
DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName",false);
|
||||
DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName");
|
||||
producer.start();
|
||||
|
||||
for (int i = 0; i < 1; i++)
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.rocketmq.example.tracemessage;
|
||||
|
||||
import org.apache.rocketmq.client.exception.MQClientException;
|
||||
import org.apache.rocketmq.client.producer.DefaultMQProducer;
|
||||
import org.apache.rocketmq.client.producer.SendResult;
|
||||
import org.apache.rocketmq.common.message.Message;
|
||||
import org.apache.rocketmq.remoting.common.RemotingHelper;
|
||||
|
||||
public class TraceProducer {
|
||||
public static void main(String[] args) throws MQClientException, InterruptedException {
|
||||
|
||||
DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName",true);
|
||||
producer.start();
|
||||
|
||||
for (int i = 0; i < 128; i++)
|
||||
try {
|
||||
{
|
||||
Message msg = new Message("TopicTest",
|
||||
"TagA",
|
||||
"OrderID188",
|
||||
"Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
|
||||
SendResult sendResult = producer.send(msg);
|
||||
System.out.printf("%s%n", sendResult);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
producer.shutdown();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
* (the "License"); you may not use this file except in compliance with
|
||||
* the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.apache.rocketmq.example.tracemessage;
|
||||
|
||||
import java.util.List;
|
||||
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
|
||||
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
|
||||
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
|
||||
import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently;
|
||||
import org.apache.rocketmq.client.exception.MQClientException;
|
||||
import org.apache.rocketmq.common.consumer.ConsumeFromWhere;
|
||||
import org.apache.rocketmq.common.message.MessageExt;
|
||||
|
||||
public class TracePushConsumer {
|
||||
public static void main(String[] args) throws InterruptedException, MQClientException {
|
||||
DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("CID_JODIE_1",true);
|
||||
consumer.subscribe("TopicTest", "*");
|
||||
consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);
|
||||
//wrong time format 2017_0422_221800
|
||||
consumer.setConsumeTimestamp("20181109221800");
|
||||
consumer.registerMessageListener(new MessageListenerConcurrently() {
|
||||
|
||||
@Override
|
||||
public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs, ConsumeConcurrentlyContext context) {
|
||||
System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);
|
||||
return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
|
||||
}
|
||||
});
|
||||
consumer.start();
|
||||
System.out.printf("Consumer Started.%n");
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -71,7 +71,7 @@ public class SendMsgStatusCommand implements SubCommand {
|
||||
|
||||
@Override
|
||||
public void execute(CommandLine commandLine, Options options, RPCHook rpcHook) throws SubCommandException {
|
||||
final DefaultMQProducer producer = new DefaultMQProducer("PID_SMSC", rpcHook,false);
|
||||
final DefaultMQProducer producer = new DefaultMQProducer("PID_SMSC", rpcHook);
|
||||
producer.setInstanceName("PID_SMSC_" + System.currentTimeMillis());
|
||||
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user