From 5d0249d66b02b1f59fcbb3e5786cc92f113014d7 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Mon, 20 May 2013 10:17:40 +0800 Subject: [PATCH 001/894] =?UTF-8?q?#10=20MessageId=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/common/MessageDecoder.java | 26 ++++++------------- .../alibaba/rocketmq/common/MessageId.java | 14 +--------- .../com/alibaba/rocketmq/common/UtilALl.java | 2 +- .../com/alibaba/rocketmq/store/CommitLog.java | 3 +-- 4 files changed, 11 insertions(+), 34 deletions(-) diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageDecoder.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageDecoder.java index 43963070..fd84b0f9 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageDecoder.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageDecoder.java @@ -29,7 +29,7 @@ public class MessageDecoder { /** * 消息ID定长 */ - public final static int MSG_ID_LENGTH = 4 + 8 + 8; + public final static int MSG_ID_LENGTH = 8 + 8; /** * 存储记录各个字段位置 @@ -40,13 +40,10 @@ public class MessageDecoder { public final static int MessageStoreTimestampPostion = 56; - public static String createMessageId(final ByteBuffer input, final int time, final ByteBuffer addr, - final long offset) { + public static String createMessageId(final ByteBuffer input, final ByteBuffer addr, final long offset) { input.flip(); input.limit(MessageDecoder.MSG_ID_LENGTH); - // 消息存储时间 4 - input.putInt(time); // 消息存储主机地址 IP PORT 8 input.put(addr); // 消息对应的物理分区 OFFSET 8 @@ -57,28 +54,22 @@ public static String createMessageId(final ByteBuffer input, final int time, fin public static MessageId decodeMessageId(final String msgId) throws UnknownHostException { - long timestamp; SocketAddress address; long offset; - // 时间 - byte[] data = UtilALl.string2bytes(msgId.substring(0, 8)); - ByteBuffer bb = ByteBuffer.wrap(data); - timestamp = bb.getInt(0) * 1000; - // 地址 - byte[] ip = UtilALl.string2bytes(msgId.substring(8, 16)); - byte[] port = UtilALl.string2bytes(msgId.substring(16, 24)); - bb = ByteBuffer.wrap(port); + byte[] ip = UtilALl.string2bytes(msgId.substring(0, 8)); + byte[] port = UtilALl.string2bytes(msgId.substring(8, 16)); + ByteBuffer bb = ByteBuffer.wrap(port); int portInt = bb.getInt(0); address = new InetSocketAddress(InetAddress.getByAddress(ip), portInt); // offset - data = UtilALl.string2bytes(msgId.substring(24, 40)); + byte[] data = UtilALl.string2bytes(msgId.substring(16, 32)); bb = ByteBuffer.wrap(data); offset = bb.getLong(0); - return new MessageId(timestamp, address, offset); + return new MessageId(address, offset); } @@ -191,8 +182,7 @@ public static MessageExt decode(java.nio.ByteBuffer byteBuffer, final boolean re // 消息ID ByteBuffer byteBufferMsgId = ByteBuffer.allocate(MSG_ID_LENGTH); String msgId = - createMessageId(byteBufferMsgId, (int) (msgExt.getStoreTimestamp() / 1000), - msgExt.getStoreHostBytes(), msgExt.getCommitLogOffset()); + createMessageId(byteBufferMsgId, msgExt.getStoreHostBytes(), msgExt.getCommitLogOffset()); msgExt.setMsgId(msgId); return msgExt; diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageId.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageId.java index 40770b2e..a45208aa 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageId.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageId.java @@ -11,28 +11,16 @@ * */ public class MessageId { - private long timestamp; private SocketAddress address; private long offset; - public MessageId(long timestamp, SocketAddress address, long offset) { - this.timestamp = timestamp; + public MessageId(SocketAddress address, long offset) { this.address = address; this.offset = offset; } - public long getTimestamp() { - return timestamp; - } - - - public void setTimestamp(long timestamp) { - this.timestamp = timestamp; - } - - public SocketAddress getAddress() { return address; } diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/UtilALl.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/UtilALl.java index 60afbe40..64170a5c 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/UtilALl.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/UtilALl.java @@ -139,7 +139,7 @@ public static final int crc32(byte[] array, int offset, int length) { * 字节数组转化成16进制形式 */ public static String bytes2string(byte[] src) { - StringBuilder sb = new StringBuilder(40); + StringBuilder sb = new StringBuilder(); if (src == null || src.length <= 0) { return null; } diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java index 2a304ff7..7af137c7 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java @@ -320,8 +320,7 @@ public AppendMessageResult doAppend(final long fileFromOffset, final ByteBuffer // PHY OFFSET long wroteOffset = fileFromOffset + byteBuffer.position(); String msgId = - MessageDecoder.createMessageId(this.msgIdMemory, (int) (msgInner.getStoreTimestamp() / 1000), - msgInner.getStoreHostBytes(), wroteOffset); + MessageDecoder.createMessageId(this.msgIdMemory, msgInner.getStoreHostBytes(), wroteOffset); /** * 记录ConsumeQueue信息 From bffa620c9b9bc4bb370b2f34fe2aca59e3de5e6e Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Mon, 20 May 2013 11:30:11 +0800 Subject: [PATCH 002/894] =?UTF-8?q?fixed=20#10=20and=20fixed=20#11=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=B6=88=E6=81=AFID=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E5=92=8C=E4=BF=AE=E5=A4=8D=E6=B3=A8=E9=94=80Client=E8=B6=85?= =?UTF-8?q?=E6=97=B6=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/alibaba/rocketmq/broker/BrokerController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java index b9f07acd..ebd4fc88 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java @@ -281,7 +281,7 @@ public void registerProcessor() { NettyRequestProcessor clientProcessor = new ClientManageProcessor(this); this.remotingServer.registerProcessor(MQProtos.MQRequestCode.HEART_BEAT_VALUE, clientProcessor, this.adminBrokerExecutor); - this.remotingServer.registerProcessor(MQProtos.MQRequestCode.UNREGISTER_CLIENT_VALUE, queryProcessor, + this.remotingServer.registerProcessor(MQProtos.MQRequestCode.UNREGISTER_CLIENT_VALUE, clientProcessor, this.adminBrokerExecutor); this.remotingServer.registerProcessor(MQProtos.MQRequestCode.END_TRANSACTION_VALUE, From b7932e7c7424b02ad9b107b03948ea332044f9d1 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Mon, 20 May 2013 14:37:41 +0800 Subject: [PATCH 003/894] =?UTF-8?q?#4=20Broker=E5=90=91Name=20Server?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E6=88=90=E5=8A=9F=E5=90=8E=EF=BC=8C=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E6=97=A5=E5=BF=97=E5=88=B0=E6=A0=87=E5=87=86=E8=BE=93?= =?UTF-8?q?=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/alibaba/rocketmq/broker/BrokerController.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java index ebd4fc88..c5b91cc4 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java @@ -132,8 +132,11 @@ private boolean registerToNameServer() { String addr = addrArray[begin++ % addrArray.length]; boolean result = MQProtosHelper.registerBrokerToNameServer(addr, this.getBrokerAddr(), 1000 * 10); - log.info("register broker[" + this.getBrokerAddr() + "] to name server[" + addr + "] " - + (result ? " success" : " failed")); + final String info = + "register broker[" + this.getBrokerAddr() + "] to name server[" + addr + "] " + + (result ? " success" : " failed"); + log.info(info); + System.out.println(info); if (result) return true; } From c46818b2e087917937f3d89c6a7cd930a2ccf77c Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Mon, 20 May 2013 14:58:00 +0800 Subject: [PATCH 004/894] =?UTF-8?q?#12=20=E5=AD=98=E5=82=A8=E5=B1=82?= =?UTF-8?q?=E6=94=AF=E6=8C=81UTF-8=EF=BC=8C=E9=87=87=E7=94=A8java=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=AD=97=E7=AC=A6=E7=BC=96=E7=A0=81=EF=BC=8C=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=B1=9E=E6=80=A7=E5=8F=AF=E6=94=AF=E6=8C=81=E4=B8=AD?= =?UTF-8?q?=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/alibaba/rocketmq/store/CommitLog.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java index 7af137c7..5625ba0d 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java @@ -354,12 +354,16 @@ public AppendMessageResult doAppend(final long fileFromOffset, final ByteBuffer /** * 序列化消息 */ - int propertiesLength = - msgInner.getPropertiesString() == null ? 0 : msgInner.getPropertiesString().length(); + final byte[] propertiesData = + msgInner.getPropertiesString() == null ? null : msgInner.getPropertiesString().getBytes(); + final int propertiesLength = propertiesData == null ? 0 : propertiesData.length; - int bodyLength = msgInner.getBody() == null ? 0 : msgInner.getBody().length; + final byte[] topicData = msgInner.getTopic().getBytes(); + final int topicLength = topicData == null ? 0 : topicData.length; - int msgLen = 4 // 1 TOTALSIZE + final int bodyLength = msgInner.getBody() == null ? 0 : msgInner.getBody().length; + + final int msgLen = 4 // 1 TOTALSIZE + 4 // 2 MAGICCODE + 4 // 3 BODYCRC + 4 // 4 QUEUEID @@ -374,7 +378,7 @@ public AppendMessageResult doAppend(final long fileFromOffset, final ByteBuffer + 4 // 13 RECONSUMETIMES + 8 // 14 Prepared Transaction Offset + 4 + bodyLength // 14 BODY - + 1 + msgInner.getTopic().length() // 15 TOPIC + + 1 + topicLength // 15 TOPIC + 2 + propertiesLength // 16 propertiesLength + 0; @@ -436,12 +440,12 @@ public AppendMessageResult doAppend(final long fileFromOffset, final ByteBuffer if (bodyLength > 0) this.msgStoreItemMemory.put(msgInner.getBody()); // 16 TOPIC - this.msgStoreItemMemory.put((byte) msgInner.getTopic().length()); - this.msgStoreItemMemory.put(msgInner.getTopic().getBytes()); + this.msgStoreItemMemory.put((byte) topicLength); + this.msgStoreItemMemory.put(topicData); // 17 PROPERTIES this.msgStoreItemMemory.putShort((short) propertiesLength); if (propertiesLength > 0) - this.msgStoreItemMemory.put(msgInner.getPropertiesString().getBytes()); + this.msgStoreItemMemory.put(propertiesData); // 向队列缓冲区写入消息 byteBuffer.put(this.msgStoreItemMemory.array(), 0, msgLen); From e04b84bd025edb385098283d4dc9f8d96a0574c3 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Mon, 20 May 2013 15:37:58 +0800 Subject: [PATCH 005/894] =?UTF-8?q?#4=20=E9=87=8D=E6=9E=84RemotingClient?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=97=A5=E5=BF=97=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/impl/consumer/PullRequest.java | 36 +++++++++++++++++-- .../remoting/netty/NettyRemotingClient.java | 7 ++-- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java index f2ad2512..78370b2e 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java @@ -3,13 +3,45 @@ */ package com.alibaba.rocketmq.client.impl.consumer; +import com.alibaba.rocketmq.common.MessageQueue; + + /** * @author vintage.wang@gmail.com shijia.wxr@taobao.com * */ public class PullRequest { private String consumerGroup; - private String topic; - private int queueId; + private MessageQueue messageQueue; private long nextOffset; + + + public String getConsumerGroup() { + return consumerGroup; + } + + + public void setConsumerGroup(String consumerGroup) { + this.consumerGroup = consumerGroup; + } + + + public MessageQueue getMessageQueue() { + return messageQueue; + } + + + public void setMessageQueue(MessageQueue messageQueue) { + this.messageQueue = messageQueue; + } + + + public long getNextOffset() { + return nextOffset; + } + + + public void setNextOffset(long nextOffset) { + this.nextOffset = nextOffset; + } } diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java index 5621f771..848c207b 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java @@ -514,14 +514,15 @@ public void closeChannel(final Channel channel) { } if (null == prevCW) { - log.info("eventCloseChannel: the channel[[" + addrRemote - + "]] has been removed from the channel table before"); + log.info( + "eventCloseChannel: the channel[{}] has been removed from the channel table before", + addrRemote); removeItemFromTable = false; } if (removeItemFromTable) { this.channelTables.remove(addrRemote); - log.info("closeChannel: the channel[" + addrRemote + "] was removed from channel table"); + log.info("closeChannel: the channel[{}] was removed from channel table", addrRemote); } } catch (Exception e) { From 9fe9ad1e011f8e5056620a941c9c1be814fbed49 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Mon, 20 May 2013 16:51:21 +0800 Subject: [PATCH 006/894] =?UTF-8?q?fixed=20#13=20=E6=B6=88=E8=B4=B9?= =?UTF-8?q?=E9=98=9F=E5=88=97=E5=8F=96=E6=B6=88=E9=A2=84=E5=88=9B=E5=BB=BA?= =?UTF-8?q?MapedFile=E6=9C=BA=E5=88=B6=EF=BC=8C=E5=8F=AA=E5=85=81=E8=AE=B8?= =?UTF-8?q?CommitLog=E9=A2=84=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/rocketmq/store/ConsumeQueue.java | 6 ++--- .../rocketmq/store/MapedFileQueue.java | 27 ++++++++++++++----- .../transaction/TransactionStateService.java | 6 ++--- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ConsumeQueue.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ConsumeQueue.java index b5ca94c8..694bdb04 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ConsumeQueue.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ConsumeQueue.java @@ -60,8 +60,7 @@ public ConsumeQueue(// + File.separator + topic// + File.separator + queueId;// - this.mapedFileQueue = - new MapedFileQueue(queueDir, mapedFileSize, defaultMessageStore.getAllocateMapedFileService()); + this.mapedFileQueue = new MapedFileQueue(queueDir, mapedFileSize, null); this.byteBufferIndex = ByteBuffer.allocate(CQStoreUnitSize); } @@ -178,8 +177,7 @@ public long getOffsetInQueueByTime(final long timestamp) { // 比较时间, 折半 long storeTime = - this.defaultMessageStore.getCommitLog().pickupStoretimestamp(phyOffset, - size); + this.defaultMessageStore.getCommitLog().pickupStoretimestamp(phyOffset, size); if (storeTime < 0) { // 没有从物理文件找到消息,此时直接返回0 return 0; diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFileQueue.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFileQueue.java index a3219514..688ebea4 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFileQueue.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFileQueue.java @@ -21,7 +21,7 @@ /** * 存储队列,数据定时删除,无限增长
* 队列是由多个文件组成 - * + * * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public class MapedFileQueue { @@ -277,7 +277,7 @@ public int deleteExpiredFileByTime(final long expiredTime, final int deleteFiles /** * 根据物理队列最小Offset来删除逻辑队列 - * + * * @param offset * 物理队列最小offset */ @@ -328,7 +328,7 @@ public int deleteExpiredFileByOffset(long offset, int unitSize) { /** * 返回值表示是否全部刷盘完成 - * + * * @return */ public boolean commit(final int flushLeastPages) { @@ -364,7 +364,7 @@ public MapedFile getLastMapedFile() { /** * 获取最后一个MapedFile对象,如果一个都没有,则新创建一个,如果最后一个写满了,则新创建一个 - * + * * @param startOffset * 如果创建新的文件,起始offset * @return @@ -391,9 +391,22 @@ public MapedFile getLastMapedFile(final long startOffset) { String nextFilePath = this.storePath + File.separator + UtilALl.offset2FileName(createOffset); String nextNextFilePath = this.storePath + File.separator + UtilALl.offset2FileName(createOffset + this.mapedFileSize); - MapedFile mapedFile = - this.allocateMapedFileService.putRequestAndReturnMapedFile(nextFilePath, nextNextFilePath, - this.mapedFileSize); + MapedFile mapedFile = null; + + if (this.allocateMapedFileService != null) { + mapedFile = + this.allocateMapedFileService.putRequestAndReturnMapedFile(nextFilePath, nextNextFilePath, + this.mapedFileSize); + } + else { + try { + mapedFile = new MapedFile(nextFilePath, this.mapedFileSize); + } + catch (IOException e) { + log.error("create mapedfile exception", e); + } + } + if (mapedFile != null) { this.readWriteLock.writeLock().lock(); if (this.mapedFiles.isEmpty()) { diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java index 49770cbc..a2fc0850 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java @@ -61,8 +61,7 @@ public TransactionStateService(final DefaultMessageStore defaultMessageStore) { this.defaultMessageStore = defaultMessageStore; this.tranStateTable = new MapedFileQueue(defaultMessageStore.getMessageStoreConfig().getTranStateTableStorePath(), - defaultMessageStore.getMessageStoreConfig().getTranStateTableMapedFileSize(), - defaultMessageStore.getAllocateMapedFileService()); + defaultMessageStore.getMessageStoreConfig().getTranStateTableMapedFileSize(), null); this.tranRedoLog = new ConsumeQueue(// TRANSACTION_REDOLOG_TOPIC,// @@ -103,8 +102,7 @@ public void recoverStateTable(final boolean lastExitOK) { private void recreateStateTable() { this.tranStateTable = new MapedFileQueue(defaultMessageStore.getMessageStoreConfig().getTranStateTableStorePath(), - defaultMessageStore.getMessageStoreConfig().getTranStateTableMapedFileSize(), - defaultMessageStore.getAllocateMapedFileService()); + defaultMessageStore.getMessageStoreConfig().getTranStateTableMapedFileSize(), null); final TreeSet preparedItemSet = new TreeSet(); From 4cc9a3b2ca457d28634766977aeac090996cdabb Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Mon, 20 May 2013 17:17:37 +0800 Subject: [PATCH 007/894] =?UTF-8?q?#4=20=E6=B5=8B=E8=AF=95=E6=AF=AB?= =?UTF-8?q?=E7=A7=92=E9=99=A4=E4=BB=A51000=20=20=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E4=B8=BA=E6=AD=A3=E7=9A=84=E6=95=B4=E6=95=B0=204=E4=B8=AA?= =?UTF-8?q?=E5=AD=97=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/producer/DefaultMQProducerImpl.java | 3 +- .../alibaba/rocketmq/research/mix/Test1.java | 42 ++++--------------- 2 files changed, 8 insertions(+), 37 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java index dd691a47..716fccdf 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java @@ -29,14 +29,13 @@ import com.alibaba.rocketmq.common.MessageId; import com.alibaba.rocketmq.common.MessageQueue; import com.alibaba.rocketmq.common.MixAll; -import com.alibaba.rocketmq.common.UtilALl; import com.alibaba.rocketmq.common.ServiceState; import com.alibaba.rocketmq.common.TopicFilterType; +import com.alibaba.rocketmq.common.UtilALl; import com.alibaba.rocketmq.common.protocol.MQProtos.MQResponseCode; import com.alibaba.rocketmq.common.protocol.header.EndTransactionRequestHeader; import com.alibaba.rocketmq.common.protocol.header.SendMessageRequestHeader; import com.alibaba.rocketmq.common.sysflag.MessageSysFlag; -import com.alibaba.rocketmq.remoting.common.RemotingHelper; import com.alibaba.rocketmq.remoting.common.RemotingUtil; import com.alibaba.rocketmq.remoting.exception.RemotingException; import com.alibaba.rocketmq.remoting.protocol.RemotingProtos.ResponseCode; diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/mix/Test1.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/mix/Test1.java index 0c389fa7..2ea69099 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/mix/Test1.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/mix/Test1.java @@ -8,45 +8,17 @@ * */ public class Test1 { - private int a = 10; + public static void test_1(String[] args) { + long timeLong = System.currentTimeMillis(); + System.out.println(" timeLong = " + timeLong); - public static void main(String[] args) throws InstantiationException, IllegalAccessException { - // String processName = - // java.lang.management.ManagementFactory.getRuntimeMXBean().getName(); - // - // String processID = processName.substring(0, - // processName.indexOf('@')); - // - // System.out.println("processID=" + processID); - - -// int i = 0; -// -// Integer abc = 99; -// i = abc; -// System.out.println(abc); - - long i = 100L; - Object obj = i; - System.out.println(obj); - System.out.println(obj.getClass()); - - Test1 test1 = Test1.class.newInstance(); - - test1.register(Test1.class); - System.out.println(test1); + int timeInt = (int) (timeLong / 1000); + System.out.println(" timeInt = " + timeInt); } - public void register(Class t) { - + public static void main(String[] args) { + test_1(args); } - - - @Override - public String toString() { - return "Test1 [a=" + a + "]"; - } - } From d937dcda681d4d8c53e4aff1731319afe2cd8ddc Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Mon, 20 May 2013 18:00:07 +0800 Subject: [PATCH 008/894] =?UTF-8?q?#3=20fixed=20#15=20=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E5=9B=9E=E6=9F=A5=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/log4j_broker.xml | 19 +++++++++++ .../rocketmq/broker/BrokerController.java | 10 +++++- .../broker/client/ProducerManager.java | 6 ++++ .../DefaultTransactionCheckExecuter.java | 33 +++++++++++++++++++ .../com/alibaba/rocketmq/common/MixAll.java | 1 + 5 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java diff --git a/conf/log4j_broker.xml b/conf/log4j_broker.xml index d7ce91c9..0ebf972f 100644 --- a/conf/log4j_broker.xml +++ b/conf/log4j_broker.xml @@ -29,6 +29,20 @@ UTF-8 + + ${user.home}/rocketmqlogs/rocketmq_rransaction.log + true + + ${user.home}/rocketmqlogs/otherdays/rocketmq_transaction-%d{yyyy-MM-dd}.%i.log + + 33554432 + + + + %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n + UTF-8 + + true @@ -51,6 +65,11 @@ + + + + + diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java index c5b91cc4..176be02e 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java @@ -28,6 +28,7 @@ import com.alibaba.rocketmq.broker.processor.QueryMessageProcessor; import com.alibaba.rocketmq.broker.processor.SendMessageProcessor; import com.alibaba.rocketmq.broker.topic.TopicConfigManager; +import com.alibaba.rocketmq.broker.transaction.DefaultTransactionCheckExecuter; import com.alibaba.rocketmq.common.BrokerConfig; import com.alibaba.rocketmq.common.DataVersion; import com.alibaba.rocketmq.common.MixAll; @@ -73,10 +74,11 @@ public class BrokerController { private final ProducerManager producerManager; // 检测所有客户端连接 private final ClientHousekeepingService clientHousekeepingService; + // Broker主动回查Producer事务状态 + private final DefaultTransactionCheckExecuter defaultTransactionCheckExecuter; // Topic配置 private TopicConfigManager topicConfigManager; - // 处理发送消息线程池 private ExecutorService sendMessageExecutor; // 处理拉取消息线程池 @@ -108,6 +110,7 @@ public BrokerController(final BrokerConfig brokerConfig, final NettyServerConfig this.consumerManager = new ConsumerManager(); this.producerManager = new ProducerManager(); this.clientHousekeepingService = new ClientHousekeepingService(this); + this.defaultTransactionCheckExecuter = new DefaultTransactionCheckExecuter(this); } @@ -473,4 +476,9 @@ public ConsumerManager getConsumerManager() { public ProducerManager getProducerManager() { return producerManager; } + + + public DefaultTransactionCheckExecuter getDefaultTransactionCheckExecuter() { + return defaultTransactionCheckExecuter; + } } diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java index 6cb17749..a7dacfde 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java @@ -45,6 +45,12 @@ public ProducerManager() { } + public Channel pickProducerChannelRandomly() { + + return null; + } + + public void scanNotActiveChannel() { try { if (this.hashcodeChannelLock.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java new file mode 100644 index 00000000..2865d8dc --- /dev/null +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java @@ -0,0 +1,33 @@ +package com.alibaba.rocketmq.broker.transaction; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.alibaba.rocketmq.broker.BrokerController; +import com.alibaba.rocketmq.common.MixAll; +import com.alibaba.rocketmq.store.transaction.TransactionCheckExecuter; + + +/** + * 存储层回调此接口,用来主动回查Producer的事务状态 + * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class DefaultTransactionCheckExecuter implements TransactionCheckExecuter { + private static final Logger log = LoggerFactory.getLogger(MixAll.TransactionLoggerName); + private final BrokerController brokerController; + + + public DefaultTransactionCheckExecuter(final BrokerController brokerController) { + this.brokerController = brokerController; + } + + + @Override + public void gotoCheck(int producerGroupHashCode, long tranStateTableOffset, long commitLogOffset, int msgSize) { + // 第一步、查询Producer + // 第二步、查询消息 + // 第三步、向Producer发起异步RPC请求 + // 第四步、收到异步应答后,开始处理应答结果 + } +} diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java index 0311e353..9c59de2a 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java @@ -65,6 +65,7 @@ public class MixAll { public static final String ToolsLoggerName = "RocketmqTools"; public static final String CommonLoggerName = "RocketmqCommon"; public static final String StoreLoggerName = "RocketmqStore"; + public static final String TransactionLoggerName = "RocketmqTransaction"; public static final long TotalPhysicalMemorySize = getTotalPhysicalMemorySize(); public static final List LocalInetAddrs = getLocalInetAddress(); public static final String Localhost = localhost(); From b463e4555393ca518e6d4c7ac1723024dc2e9d02 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Mon, 20 May 2013 18:25:46 +0800 Subject: [PATCH 009/894] =?UTF-8?q?#4=20#3=20=E9=87=8D=E6=9E=84=E4=BA=86?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E5=B1=82=E5=8F=98=E9=87=8F=E5=91=BD=E5=90=8D?= =?UTF-8?q?=20=E5=88=86=E5=B8=83=E5=BC=8F=E4=BA=8B=E5=8A=A1=E5=9B=9E?= =?UTF-8?q?=E6=9F=A5=E6=9C=BA=E5=88=B6=E5=BC=80=E5=8F=91=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../broker/client/ProducerManager.java | 46 ++++++++++++++++--- .../DefaultTransactionCheckExecuter.java | 17 +++++++ .../rocketmq/store/DefaultMessageStore.java | 26 +++++++---- .../alibaba/rocketmq/store/MessageStore.java | 7 ++- 4 files changed, 79 insertions(+), 17 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java index a7dacfde..07f09553 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java @@ -9,6 +9,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; @@ -31,6 +32,8 @@ public class ProducerManager { private static final long ChannelExpiredTimeout = 1000 * 120; + private final Random random = new Random(System.currentTimeMillis()); + private final Lock hashcodeChannelLock = new ReentrantLock(); private final HashMap> hashcodeChannelTable = new HashMap>(); @@ -41,11 +44,42 @@ public class ProducerManager { public ProducerManager() { + } + + + private int generateRandmonNum() { + int value = this.random.nextInt(); + + if (value < 0) { + value = Math.abs(value); + } + return value; } - public Channel pickProducerChannelRandomly() { + public ClientChannelInfo pickProducerChannelRandomly(final int producerGroupHashCode) { + try { + if (this.hashcodeChannelLock.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { + try { + List channelInfoList = this.hashcodeChannelTable.get(producerGroupHashCode); + if (channelInfoList != null && !channelInfoList.isEmpty()) { + int index = this.generateRandmonNum() % channelInfoList.size(); + ClientChannelInfo info = channelInfoList.get(index); + return info; + } + } + finally { + this.hashcodeChannelLock.unlock(); + } + } + else { + log.warn("ProducerManager pickProducerChannelRandomly lock timeout"); + } + } + catch (InterruptedException e) { + log.error("", e); + } return null; } @@ -84,7 +118,7 @@ public void scanNotActiveChannel() { } } else { - log.warn("ProducerManager closeChannel lock timeout"); + log.warn("ProducerManager scanNotActiveChannel lock timeout"); } } catch (InterruptedException e) { @@ -121,7 +155,7 @@ public void scanNotActiveChannel() { } } else { - log.warn("ProducerManager closeChannel lock timeout"); + log.warn("ProducerManager scanNotActiveChannel lock timeout"); } } catch (InterruptedException e) { @@ -152,7 +186,7 @@ public void doChannelCloseEvent(final String remoteAddr, final Channel channel) } } else { - log.warn("ProducerManager closeChannel lock timeout"); + log.warn("ProducerManager doChannelCloseEvent lock timeout"); } } catch (InterruptedException e) { @@ -180,7 +214,7 @@ public void doChannelCloseEvent(final String remoteAddr, final Channel channel) } } else { - log.warn("ProducerManager closeChannel lock timeout"); + log.warn("ProducerManager doChannelCloseEvent lock timeout"); } } catch (InterruptedException e) { @@ -316,7 +350,7 @@ public void unregisterProducer(final String group, final ClientChannelInfo clien } } else { - log.warn("ProducerManager registerProducer lock timeout"); + log.warn("ProducerManager unregisterProducer lock timeout"); } } catch (InterruptedException e) { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java index 2865d8dc..3551f090 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java @@ -4,7 +4,9 @@ import org.slf4j.LoggerFactory; import com.alibaba.rocketmq.broker.BrokerController; +import com.alibaba.rocketmq.broker.client.ClientChannelInfo; import com.alibaba.rocketmq.common.MixAll; +import com.alibaba.rocketmq.store.SelectMapedBufferResult; import com.alibaba.rocketmq.store.transaction.TransactionCheckExecuter; @@ -26,8 +28,23 @@ public DefaultTransactionCheckExecuter(final BrokerController brokerController) @Override public void gotoCheck(int producerGroupHashCode, long tranStateTableOffset, long commitLogOffset, int msgSize) { // 第一步、查询Producer + final ClientChannelInfo clientChannelInfo = + this.brokerController.getProducerManager().pickProducerChannelRandomly(producerGroupHashCode); + if (null == clientChannelInfo) { + log.warn("check a producer transaction state, but not find any channel of this group[{}]", + producerGroupHashCode); + return; + } // 第二步、查询消息 + SelectMapedBufferResult selectMapedBufferResult = + this.brokerController.getMessageStore().selectOneMessageByOffset(commitLogOffset, msgSize); + if (null == selectMapedBufferResult) { + log.warn("check a producer transaction state, but not find message by commitLogOffset: {}, msgSize: ", + commitLogOffset, msgSize); + return; + } // 第三步、向Producer发起异步RPC请求 + // 第四步、收到异步应答后,开始处理应答结果 } } diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java index 3ae55c3e..f5f22630 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java @@ -1079,7 +1079,8 @@ public GetMessageResult getMessage(final String topic, final int queueId, final } if (!this.runningFlags.isReadable()) { - log.warn("message store is not readable, so getMessage is forbidden " + this.runningFlags.getFlagBits()); + log.warn("message store is not readable, so getMessage is forbidden " + + this.runningFlags.getFlagBits()); return null; } @@ -1340,13 +1341,13 @@ public long getOffsetInQueueByTime(String topic, int queueId, long timestamp) { } - public MessageExt lookMessageByOffset(long phyOffset) { - SelectMapedBufferResult sbr = this.commitLog.getMessage(phyOffset, 4); + public MessageExt lookMessageByOffset(long commitLogOffset) { + SelectMapedBufferResult sbr = this.commitLog.getMessage(commitLogOffset, 4); if (null != sbr) { try { // 1 TOTALSIZE int size = sbr.getByteBuffer().getInt(); - return lookMessageByOffset(phyOffset, size); + return lookMessageByOffset(commitLogOffset, size); } finally { sbr.release(); @@ -1357,8 +1358,8 @@ public MessageExt lookMessageByOffset(long phyOffset) { } - public MessageExt lookMessageByOffset(long phyOffset, int size) { - SelectMapedBufferResult sbr = this.commitLog.getMessage(phyOffset, size); + public MessageExt lookMessageByOffset(long commitLogOffset, int size) { + SelectMapedBufferResult sbr = this.commitLog.getMessage(commitLogOffset, size); if (null != sbr) { try { return MessageDecoder.decode(sbr.getByteBuffer()); @@ -1557,13 +1558,13 @@ public HashMap getRuntimeInfo() { @Override - public SelectMapedBufferResult selectOneMessageByOffset(long phyOffset) { - SelectMapedBufferResult sbr = this.commitLog.getMessage(phyOffset, 4); + public SelectMapedBufferResult selectOneMessageByOffset(long commitLogOffset) { + SelectMapedBufferResult sbr = this.commitLog.getMessage(commitLogOffset, 4); if (null != sbr) { try { // 1 TOTALSIZE int size = sbr.getByteBuffer().getInt(); - return this.commitLog.getMessage(phyOffset, size); + return this.commitLog.getMessage(commitLogOffset, size); } finally { sbr.release(); @@ -1574,6 +1575,12 @@ public SelectMapedBufferResult selectOneMessageByOffset(long phyOffset) { } + @Override + public SelectMapedBufferResult selectOneMessageByOffset(long commitLogOffset, int msgSize) { + return this.commitLog.getMessage(commitLogOffset, msgSize); + } + + public ScheduleMessageService getScheduleMessageService() { return scheduleMessageService; } @@ -1592,4 +1599,5 @@ public RunningFlags getRunningFlags() { public TransactionCheckExecuter getTransactionCheckExecuter() { return transactionCheckExecuter; } + } diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageStore.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageStore.java index 6b04e925..7a905dff 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageStore.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageStore.java @@ -75,13 +75,16 @@ public GetMessageResult getMessage(final String topic, final int queueId, final /** * 通过物理队列Offset,查询消息。 如果发生错误,则返回null */ - public MessageExt lookMessageByOffset(final long phyOffset); + public MessageExt lookMessageByOffset(final long commitLogOffset); /** * 通过物理队列Offset,查询消息。 如果发生错误,则返回null */ - public SelectMapedBufferResult selectOneMessageByOffset(final long phyOffset); + public SelectMapedBufferResult selectOneMessageByOffset(final long commitLogOffset); + + + public SelectMapedBufferResult selectOneMessageByOffset(final long commitLogOffset, final int msgSize); /** From 1f011f5495a3bda9f2bc7d66fd08973f38c0de64 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Mon, 20 May 2013 21:21:33 +0800 Subject: [PATCH 010/894] =?UTF-8?q?#3=20Broker=E5=BC=80=E5=8F=91=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E8=B0=83=E7=94=A8Producer=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DefaultTransactionCheckExecuter.java | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java index 3551f090..464499fa 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java @@ -1,11 +1,20 @@ package com.alibaba.rocketmq.broker.transaction; +import io.netty.channel.Channel; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelFutureListener; +import io.netty.channel.FileRegion; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.alibaba.rocketmq.broker.BrokerController; import com.alibaba.rocketmq.broker.client.ClientChannelInfo; +import com.alibaba.rocketmq.broker.pagecache.OneMessageTransfer; import com.alibaba.rocketmq.common.MixAll; +import com.alibaba.rocketmq.common.protocol.MQProtos.MQRequestCode; +import com.alibaba.rocketmq.common.protocol.header.CheckTransactionStateRequestHeader; +import com.alibaba.rocketmq.remoting.protocol.RemotingCommand; import com.alibaba.rocketmq.store.SelectMapedBufferResult; import com.alibaba.rocketmq.store.transaction.TransactionCheckExecuter; @@ -25,6 +34,36 @@ public DefaultTransactionCheckExecuter(final BrokerController brokerController) } + private void invokeProducer(// + final Channel channel,// + final CheckTransactionStateRequestHeader requestHeader,// + final SelectMapedBufferResult selectMapedBufferResult// + ) { + RemotingCommand request = + RemotingCommand.createRequestCommand(MQRequestCode.CHECK_TRANSACTION_STATE_VALUE, requestHeader); + request.markOnewayRPC(); + + try { + FileRegion fileRegion = + new OneMessageTransfer(request.encodeHeader(selectMapedBufferResult.getSize()), + selectMapedBufferResult); + channel.sendFile(fileRegion).addListener(new ChannelFutureListener() { + @Override + public void operationComplete(ChannelFuture future) throws Exception { + selectMapedBufferResult.release(); + if (!future.isSuccess()) { + log.error("invokeProducer failed,", future.cause()); + } + } + }); + } + catch (Throwable e) { + log.error("invokeProducer exception", e); + selectMapedBufferResult.release(); + } + } + + @Override public void gotoCheck(int producerGroupHashCode, long tranStateTableOffset, long commitLogOffset, int msgSize) { // 第一步、查询Producer @@ -43,8 +82,11 @@ public void gotoCheck(int producerGroupHashCode, long tranStateTableOffset, long commitLogOffset, msgSize); return; } - // 第三步、向Producer发起异步RPC请求 - // 第四步、收到异步应答后,开始处理应答结果 + // 第三步、向Producer发起请求 + final CheckTransactionStateRequestHeader requestHeader = new CheckTransactionStateRequestHeader(); + requestHeader.setCommitLogOffset(commitLogOffset); + requestHeader.setTranStateTableOffset(tranStateTableOffset); + this.invokeProducer(clientChannelInfo.getChannel(), requestHeader, selectMapedBufferResult); } } From 0f1ec716f0b54a8ee6948db1600edb750ce524ef Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Mon, 20 May 2013 21:31:36 +0800 Subject: [PATCH 011/894] =?UTF-8?q?#4=20=E9=87=8D=E6=9E=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/rocketmq/client/impl/ClientRemotingProcessor.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java index 470619e5..66af62c0 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java @@ -11,8 +11,6 @@ import com.alibaba.rocketmq.common.protocol.MQProtos.MQRequestCode; import com.alibaba.rocketmq.common.protocol.header.CheckTransactionStateRequestHeader; import com.alibaba.rocketmq.common.protocol.header.CheckTransactionStateResponseHeader; -import com.alibaba.rocketmq.common.protocol.header.SendMessageRequestHeader; -import com.alibaba.rocketmq.common.protocol.header.SendMessageResponseHeader; import com.alibaba.rocketmq.remoting.exception.RemotingCommandException; import com.alibaba.rocketmq.remoting.netty.NettyRequestProcessor; import com.alibaba.rocketmq.remoting.protocol.RemotingCommand; From ada80a390d4c57a89f30444e556ad9c325268428 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Tue, 21 May 2013 10:03:51 +0800 Subject: [PATCH 012/894] =?UTF-8?q?#2=20Producer=E6=88=96=E8=80=85Consumer?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=97=B6=E5=80=99=E5=B0=9D=E8=AF=95=E5=8F=91?= =?UTF-8?q?=E9=80=81=E5=BF=83=E8=B7=B3=E6=B3=A8=E5=86=8C=E8=87=AA=E5=B7=B1?= =?UTF-8?q?=20=E5=88=9A=E5=90=AF=E5=8A=A8=E6=9C=89=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E6=9C=AC=E5=9C=B0=E6=8B=BF=E4=B8=8D=E5=88=B0Broker=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E5=88=97=E8=A1=A8=EF=BC=8C=E6=89=80=E4=BB=A5=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/impl/factory/MQClientFactory.java | 54 +++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java index bd4dc92a..e0410d34 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java @@ -79,6 +79,9 @@ public class MQClientFactory { private final Lock lockNamesrv = new ReentrantLock(); private final static long LockTimeoutMillis = 3000; + // 心跳与注销动作加锁 + private final Lock lockHeartbeat = new ReentrantLock(); + // 存储Broker Name 与Broker Address的对应关系 private final ConcurrentHashMap> brokerAddrTable = new ConcurrentHashMap>(); @@ -170,7 +173,7 @@ public void run() { @Override public void run() { try { - MQClientFactory.this.sendHeartbeatToAllBroker(); + MQClientFactory.this.sendHeartbeatToAllBrokerWithLock(); } catch (Exception e) { log.error("ScheduledTask sendHeartbeatToAllBroker exception", e); @@ -232,6 +235,29 @@ public void shutdown() { } + private void unregisterClientWithLock(final String producerGroup, final String consumerGroup) { + try { + if (this.lockHeartbeat.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { + try { + this.unregisterClient(producerGroup, consumerGroup); + } + catch (Exception e) { + log.error("unregisterClient exception", e); + } + finally { + this.lockHeartbeat.unlock(); + } + } + else { + log.warn("lock heartBeat, but failed."); + } + } + catch (InterruptedException e) { + log.warn("unregisterClientWithLock exception", e); + } + } + + private void unregisterClient(final String producerGroup, final String consumerGroup) { for (String name : this.brokerAddrTable.keySet()) { final HashMap oneTable = this.brokerAddrTable.get(name); @@ -296,6 +322,24 @@ private HeartbeatData prepareHeartbeatData() { } + private void sendHeartbeatToAllBrokerWithLock() { + if (this.lockHeartbeat.tryLock()) { + try { + this.sendHeartbeatToAllBroker(); + } + catch (final Exception e) { + log.error("sendHeartbeatToAllBroker exception", e); + } + finally { + this.lockHeartbeat.unlock(); + } + } + else { + log.warn("lock heartBeat, but failed."); + } + } + + private void sendHeartbeatToAllBroker() { final HeartbeatData heartbeatData = this.prepareHeartbeatData(); final boolean producerEmpty = heartbeatData.getProducerDataSet().isEmpty(); @@ -349,13 +393,15 @@ public boolean registerProducer(final String group, final DefaultMQProducerImpl return false; } + this.sendHeartbeatToAllBrokerWithLock(); + return true; } public void unregisterProducer(final String group) { this.producerTable.remove(group); - this.unregisterClient(group, null); + this.unregisterClientWithLock(group, null); } @@ -370,13 +416,15 @@ public boolean registerConsumer(final String group, final MQConsumerInner consum return false; } + this.sendHeartbeatToAllBrokerWithLock(); + return true; } public void unregisterConsumer(final String group) { this.consumerTable.remove(group); - this.unregisterClient(null, group); + this.unregisterClientWithLock(null, group); } From 9fbe8d016c4aee37424955506f8e26c85a972dc4 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Tue, 21 May 2013 10:33:48 +0800 Subject: [PATCH 013/894] =?UTF-8?q?#2=20Producer=E6=8A=BD=E5=8F=96?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E5=86=85=E9=83=A8=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E4=BE=9B=E5=86=85=E9=83=A8=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/impl/factory/MQClientFactory.java | 13 +++++++------ .../impl/producer/DefaultMQProducerImpl.java | 4 +++- .../client/impl/producer/MQProducerInner.java | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 7 deletions(-) create mode 100644 rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java index e0410d34..67184a52 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java @@ -30,6 +30,7 @@ import com.alibaba.rocketmq.client.impl.MQClientAPIImpl; import com.alibaba.rocketmq.client.impl.consumer.MQConsumerInner; import com.alibaba.rocketmq.client.impl.producer.DefaultMQProducerImpl; +import com.alibaba.rocketmq.client.impl.producer.MQProducerInner; import com.alibaba.rocketmq.client.impl.producer.TopicPublishInfo; import com.alibaba.rocketmq.common.MixAll; import com.alibaba.rocketmq.common.MessageQueue; @@ -61,8 +62,8 @@ public class MQClientFactory { private final long bootTimestamp = System.currentTimeMillis(); // Producer对象 - private final ConcurrentHashMap producerTable = - new ConcurrentHashMap(); + private final ConcurrentHashMap producerTable = + new ConcurrentHashMap(); // Consumer对象 private final ConcurrentHashMap consumerTable = new ConcurrentHashMap(); @@ -309,7 +310,7 @@ private HeartbeatData prepareHeartbeatData() { // Producer for (String group : this.producerTable.keySet()) { - DefaultMQProducerImpl impl = this.producerTable.get(group); + MQProducerInner impl = this.producerTable.get(group); if (impl != null) { ProducerData producerData = new ProducerData(); producerData.setGroupName(group); @@ -387,7 +388,7 @@ public boolean registerProducer(final String group, final DefaultMQProducerImpl return false; } - DefaultMQProducerImpl prev = this.producerTable.putIfAbsent(group, producer); + MQProducerInner prev = this.producerTable.putIfAbsent(group, producer); if (prev != null) { log.warn("the producer group[{}] exist already.", group); return false; @@ -619,7 +620,7 @@ private void updateTopicRouteInfoFromNameServer() { // Producer for (String g : this.producerTable.keySet()) { - DefaultMQProducerImpl impl = this.producerTable.get(g); + MQProducerInner impl = this.producerTable.get(g); if (impl != null) { Set lst = impl.getPublishTopicList(); topicList.addAll(lst); @@ -658,7 +659,7 @@ public boolean updateTopicRouteInfoFromNameServer(final String topic) { // 更新发布队列信息 TopicPublishInfo publishInfo = topicRouteData2TopicPublishInfo(topic, topicRouteData); for (String g : this.producerTable.keySet()) { - DefaultMQProducerImpl impl = this.producerTable.get(g); + MQProducerInner impl = this.producerTable.get(g); if (impl != null) { impl.updateTopicPublishInfo(topic, publishInfo); } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java index 716fccdf..a82c170c 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java @@ -46,7 +46,7 @@ * * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ -public class DefaultMQProducerImpl { +public class DefaultMQProducerImpl implements MQProducerInner { private ServiceState serviceState = ServiceState.CREATE_JUST; private final DefaultMQProducer defaultMQProducer; @@ -131,6 +131,7 @@ private void makeSureStateOK() throws MQClientException { } + @Override public void updateTopicPublishInfo(final String topic, final TopicPublishInfo info) { if (info != null && topic != null) { TopicPublishInfo prev = this.topicPublishInfoTable.put(topic, info); @@ -141,6 +142,7 @@ public void updateTopicPublishInfo(final String topic, final TopicPublishInfo in } + @Override public Set getPublishTopicList() { Set topicList = new HashSet(); for (String key : this.topicPublishInfoTable.keySet()) { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java new file mode 100644 index 00000000..68a43294 --- /dev/null +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java @@ -0,0 +1,16 @@ +package com.alibaba.rocketmq.client.impl.producer; + +import java.util.Set; + + +/** + * Producer内部接口 + * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public interface MQProducerInner { + public Set getPublishTopicList(); + + + public void updateTopicPublishInfo(final String topic, final TopicPublishInfo info); +} From 73946be3ef8b757a7444752eda7409000914dddd Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Tue, 21 May 2013 11:17:44 +0800 Subject: [PATCH 014/894] =?UTF-8?q?#3=20=E5=BC=80=E5=8F=91=E5=88=86?= =?UTF-8?q?=E5=B8=83=E5=BC=8F=E4=BA=8B=E5=8A=A1=EF=BC=8CProducer=E7=AB=AF?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=A3=80=E6=9F=A5=E4=BA=8B=E5=8A=A1=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/impl/ClientRemotingProcessor.java | 64 +++++++++++++++++-- .../client/impl/factory/MQClientFactory.java | 10 +++ .../impl/producer/DefaultMQProducerImpl.java | 13 ++++ .../client/impl/producer/MQProducerInner.java | 5 ++ 4 files changed, 85 insertions(+), 7 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java index 66af62c0..e3de45e0 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java @@ -5,12 +5,19 @@ import io.netty.channel.ChannelHandlerContext; +import java.nio.ByteBuffer; + import org.slf4j.Logger; import com.alibaba.rocketmq.client.impl.factory.MQClientFactory; +import com.alibaba.rocketmq.client.impl.producer.MQProducerInner; +import com.alibaba.rocketmq.client.producer.LocalTransactionState; +import com.alibaba.rocketmq.client.producer.TransactionCheckListener; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.common.MessageDecoder; +import com.alibaba.rocketmq.common.MessageExt; import com.alibaba.rocketmq.common.protocol.MQProtos.MQRequestCode; import com.alibaba.rocketmq.common.protocol.header.CheckTransactionStateRequestHeader; -import com.alibaba.rocketmq.common.protocol.header.CheckTransactionStateResponseHeader; import com.alibaba.rocketmq.remoting.exception.RemotingCommandException; import com.alibaba.rocketmq.remoting.netty.NettyRequestProcessor; import com.alibaba.rocketmq.remoting.protocol.RemotingCommand; @@ -46,18 +53,61 @@ public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand } + private void processTransactionState(// + final ChannelHandlerContext ctx,// + final CheckTransactionStateRequestHeader requestHeader,// + final LocalTransactionState localTransactionState,// + final Throwable exception) { + // TODO + } + + + /** + * Oneway调用,无返回值 + */ public RemotingCommand checkTransactionState(ChannelHandlerContext ctx, RemotingCommand request) throws RemotingCommandException { - final RemotingCommand response = - RemotingCommand.createResponseCommand(CheckTransactionStateResponseHeader.class); - final CheckTransactionStateResponseHeader responseHeader = - (CheckTransactionStateResponseHeader) response.getCustomHeader(); final CheckTransactionStateRequestHeader requestHeader = (CheckTransactionStateRequestHeader) request .decodeCommandCustomHeader(CheckTransactionStateRequestHeader.class); + final ByteBuffer byteBuffer = ByteBuffer.wrap(request.getBody()); + final MessageExt messageExt = MessageDecoder.decode(byteBuffer); + if (messageExt != null) { + final String group = messageExt.getProperty(Message.PROPERTY_PRODUCER_GROUP); + if (group != null) { + MQProducerInner producer = this.mqClientFactory.selectProducer(group); + if (producer != null) { + TransactionCheckListener transactionCheckListener = producer.checkListener(); + if (transactionCheckListener != null) { + LocalTransactionState localTransactionState = LocalTransactionState.UNKNOW; + Throwable exception = null; + try { + localTransactionState = + transactionCheckListener.checkLocalTransactionState(messageExt); + } + catch (Throwable e) { + log.error("checkTransactionState, checkLocalTransactionState exception", e); + exception = e; + } - response.setOpaque(request.getOpaque()); + this.processTransactionState(ctx, requestHeader, localTransactionState, exception); + } + else { + log.warn("checkTransactionState, pick transactionCheckListener by group[{}] failed", group); + } + } + else { + log.debug("checkTransactionState, pick producer by group[{}] failed", group); + } + } + else { + log.warn("checkTransactionState, pick producer group failed"); + } + } + else { + log.warn("checkTransactionState, decode message failed"); + } - return response; + return null; } } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java index 67184a52..b43a78c1 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java @@ -400,6 +400,16 @@ public boolean registerProducer(final String group, final DefaultMQProducerImpl } + public MQProducerInner selectProducer(final String group) { + return this.producerTable.get(group); + } + + + public MQConsumerInner selectConsumer(final String group) { + return this.consumerTable.get(group); + } + + public void unregisterProducer(final String group) { this.producerTable.remove(group); this.unregisterClientWithLock(group, null); diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java index a82c170c..61abb1ce 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java @@ -23,6 +23,8 @@ import com.alibaba.rocketmq.client.producer.SendCallback; import com.alibaba.rocketmq.client.producer.SendResult; import com.alibaba.rocketmq.client.producer.SendStatus; +import com.alibaba.rocketmq.client.producer.TransactionCheckListener; +import com.alibaba.rocketmq.client.producer.TransactionMQProducer; import com.alibaba.rocketmq.common.Message; import com.alibaba.rocketmq.common.MessageDecoder; import com.alibaba.rocketmq.common.MessageExt; @@ -650,4 +652,15 @@ public SendResult sendMessageInTransaction(final Message msg, final LocalTransac return sendResult; } + + + @Override + public TransactionCheckListener checkListener() { + if (this.defaultMQProducer instanceof TransactionMQProducer) { + TransactionMQProducer producer = (TransactionMQProducer) defaultMQProducer; + return producer.getTransactionCheckListener(); + } + + return null; + } } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java index 68a43294..5dbbf43c 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java @@ -2,6 +2,8 @@ import java.util.Set; +import com.alibaba.rocketmq.client.producer.TransactionCheckListener; + /** * Producer内部接口 @@ -12,5 +14,8 @@ public interface MQProducerInner { public Set getPublishTopicList(); + public TransactionCheckListener checkListener(); + + public void updateTopicPublishInfo(final String topic, final TopicPublishInfo info); } From cb01d19c018a1559e3b1f94a09f780c17bc2194e Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Tue, 21 May 2013 13:54:31 +0800 Subject: [PATCH 015/894] =?UTF-8?q?#3=20=E4=BC=98=E5=8C=96Oneway=20RPC?= =?UTF-8?q?=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/remoting/netty/NettyRemotingAbstract.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java index 3dd962e7..7b701dc0 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java @@ -143,14 +143,8 @@ public void processRequestCommand(final ChannelHandlerContext ctx, final Remotin public void run() { try { final RemotingCommand response = pair.getObject1().processRequest(ctx, cmd); - if (cmd.isOnewayRPC()) { - if (response.getCode() != ResponseCode.SUCCESS_VALUE) { - plog.error("client oneway request has failed response, " - + RemotingHelper.parseChannelRemoteAddr(ctx.channel())); - plog.error(response.toString()); - } - } - else { + // Oneway形式忽略应答结果 + if (!cmd.isOnewayRPC()) { if (response != null) { response.setOpaque(cmd.getOpaque()); response.markResponseType(); From c8030647851e1a538ec55b1d4d48f4ff90f7ab8d Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Tue, 21 May 2013 14:24:30 +0800 Subject: [PATCH 016/894] =?UTF-8?q?#3=20=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?=E4=B8=BB=E5=8A=A8=E6=8F=90=E4=BA=A4=E4=BA=8B=E5=8A=A1=E4=B8=8E?= =?UTF-8?q?=E8=A2=AB=E5=8A=A8Check=E6=97=B6=EF=BC=8C=E5=85=B1=E7=94=A8?= =?UTF-8?q?=E4=B8=80=E4=B8=AARPC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/EndTransactionProcessor.java | 22 ++++++++++++++++++- .../header/EndTransactionRequestHeader.java | 8 +++++++ .../remoting/netty/NettyRemotingAbstract.java | 1 - 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java index e2e1e003..f226d6b4 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java @@ -24,7 +24,6 @@ import com.alibaba.rocketmq.store.MessageExtBrokerInner; import com.alibaba.rocketmq.store.MessageStore; import com.alibaba.rocketmq.store.PutMessageResult; -import com.alibaba.rocketmq.store.SelectMapedBufferResult; /** @@ -72,6 +71,8 @@ private MessageExtBrokerInner endMessageTransaction(MessageExt msgExt) { return msgInner; } + private static final Logger logTransaction = LoggerFactory.getLogger(MixAll.TransactionLoggerName); + @Override public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand request) @@ -80,6 +81,25 @@ public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand final EndTransactionRequestHeader requestHeader = (EndTransactionRequestHeader) request.decodeCommandCustomHeader(EndTransactionRequestHeader.class); + switch (requestHeader.getCommitOrRollback()) { + // 不提交也不回滚 + case MessageSysFlag.TransactionNotType: { + logTransaction.warn("check producer transaction state, but it's pending status.\n"// + + "RequestHeader: {} Remark: {}", requestHeader.toString(), request.getRemark()); + return null; + } + // 提交 + case MessageSysFlag.TransactionCommitType: { + break; + } + // 回滚 + case MessageSysFlag.TransactionRollbackType: { + break; + } + default: + return null; + } + final MessageExt msgExt = this.brokerController.getMessageStore().lookMessageByOffset(requestHeader.getCommitLogOffset()); if (msgExt != null) { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java index 77e5412e..6c534406 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java @@ -77,4 +77,12 @@ public Integer getCommitOrRollback() { public void setCommitOrRollback(Integer commitOrRollback) { this.commitOrRollback = commitOrRollback; } + + + @Override + public String toString() { + return "EndTransactionRequestHeader [producerGroup=" + producerGroup + ", tranStateTableOffset=" + + tranStateTableOffset + ", commitLogOffset=" + commitLogOffset + ", commitOrRollback=" + + commitOrRollback + "]"; + } } diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java index 7b701dc0..3a724e53 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java @@ -170,7 +170,6 @@ public void operationComplete(ChannelFuture future) throws Exception { } } else { - // TODO // 收到请求,但是没有返回应答,可能是processRequest中进行了应答,忽略这种情况 } } From 5f29127628b8e24f344f456d20789e63c09f3de3 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Tue, 21 May 2013 14:50:02 +0800 Subject: [PATCH 017/894] =?UTF-8?q?#3=20=E5=88=86=E5=B8=83=E5=BC=8F?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1Producer=E7=AB=AF=E5=8A=9F=E8=83=BD=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E5=AE=8C=E6=88=90=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/impl/ClientRemotingProcessor.java | 34 +++++++++++++++++-- .../rocketmq/client/impl/MQClientAPIImpl.java | 16 ++++++++- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java index e3de45e0..ee0d80c0 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java @@ -9,6 +9,7 @@ import org.slf4j.Logger; +import com.alibaba.rocketmq.client.exception.MQBrokerException; import com.alibaba.rocketmq.client.impl.factory.MQClientFactory; import com.alibaba.rocketmq.client.impl.producer.MQProducerInner; import com.alibaba.rocketmq.client.producer.LocalTransactionState; @@ -18,7 +19,11 @@ import com.alibaba.rocketmq.common.MessageExt; import com.alibaba.rocketmq.common.protocol.MQProtos.MQRequestCode; import com.alibaba.rocketmq.common.protocol.header.CheckTransactionStateRequestHeader; +import com.alibaba.rocketmq.common.protocol.header.EndTransactionRequestHeader; +import com.alibaba.rocketmq.common.sysflag.MessageSysFlag; +import com.alibaba.rocketmq.remoting.common.RemotingHelper; import com.alibaba.rocketmq.remoting.exception.RemotingCommandException; +import com.alibaba.rocketmq.remoting.exception.RemotingException; import com.alibaba.rocketmq.remoting.netty.NettyRequestProcessor; import com.alibaba.rocketmq.remoting.protocol.RemotingCommand; @@ -57,8 +62,33 @@ private void processTransactionState(// final ChannelHandlerContext ctx,// final CheckTransactionStateRequestHeader requestHeader,// final LocalTransactionState localTransactionState,// + final String producerGroup,// final Throwable exception) { - // TODO + final String addr = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); + final EndTransactionRequestHeader thisHeader = new EndTransactionRequestHeader(); + thisHeader.setCommitLogOffset(requestHeader.getCommitLogOffset()); + thisHeader.setProducerGroup(producerGroup); + thisHeader.setTranStateTableOffset(requestHeader.getTranStateTableOffset()); + switch (localTransactionState) { + case COMMIT_MESSAGE: + thisHeader.setCommitOrRollback(MessageSysFlag.TransactionCommitType); + break; + case ROLLBACK_MESSAGE: + thisHeader.setCommitOrRollback(MessageSysFlag.TransactionRollbackType); + break; + case UNKNOW: + thisHeader.setCommitOrRollback(MessageSysFlag.TransactionNotType); + break; + default: + break; + } + + try { + mqClientFactory.getMQClientAPIImpl().endTransactionOneway(addr, thisHeader, 3000); + } + catch (Exception e) { + log.error("endTransactionOneway exception", e); + } } @@ -90,7 +120,7 @@ public RemotingCommand checkTransactionState(ChannelHandlerContext ctx, Remoting exception = e; } - this.processTransactionState(ctx, requestHeader, localTransactionState, exception); + this.processTransactionState(ctx, requestHeader, localTransactionState, group, exception); } else { log.warn("checkTransactionState, pick transactionCheckListener by group[{}] failed", group); diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java index c862a7f6..cb3566e4 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java @@ -662,7 +662,7 @@ public void unregisterClient(// /** - * 更新Consumer消费进度 + * 提交或者回滚事务 */ public void endTransaction(// final String addr,// @@ -685,6 +685,20 @@ public void endTransaction(// } + /** + * 提交或者回滚事务 + */ + public void endTransactionOneway(// + final String addr,// + final EndTransactionRequestHeader requestHeader,// + final long timeoutMillis// + ) throws RemotingException, MQBrokerException, InterruptedException { + RemotingCommand request = + RemotingCommand.createRequestCommand(MQRequestCode.END_TRANSACTION_VALUE, requestHeader); + this.remotingClient.invokeOneway(addr, request, timeoutMillis); + } + + /** * 查询消息 */ From 11ab020e3e2b578d3db0e7c05de1ee3ce590ff97 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Tue, 21 May 2013 18:00:09 +0800 Subject: [PATCH 018/894] =?UTF-8?q?#3=20=E5=88=86=E5=B8=83=E5=BC=8F?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1Broker=E7=AB=AF=E4=B8=BB=E5=8A=A8Check?= =?UTF-8?q?=E5=8A=9F=E8=83=BDOK=20=E8=87=B3=E6=AD=A4=EF=BC=8C=E6=95=B4?= =?UTF-8?q?=E4=B8=AA=E5=88=86=E5=B8=83=E5=BC=8F=E5=8A=9F=E8=83=BD=E4=B8=BB?= =?UTF-8?q?=E5=8A=A8=E5=9B=9E=E6=9F=A5=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E5=AE=8C=E6=88=90=EF=BC=8C=E4=BD=86=E6=98=AF?= =?UTF-8?q?=E4=BB=8D=E9=9C=80=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../transaction/TransactionStateService.java | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java index a2fc0850..3ca93233 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java @@ -6,6 +6,8 @@ import java.nio.ByteBuffer; import java.util.Iterator; import java.util.List; +import java.util.Timer; +import java.util.TimerTask; import java.util.TreeSet; import java.util.concurrent.atomic.AtomicLong; @@ -21,6 +23,7 @@ import com.alibaba.rocketmq.store.MapedFile; import com.alibaba.rocketmq.store.MapedFileQueue; import com.alibaba.rocketmq.store.SelectMapedBufferResult; +import com.alibaba.rocketmq.store.schedule.ScheduleMessageService; /** @@ -56,6 +59,9 @@ public class TransactionStateService { // State Table Offset,重启时,必须纠正 private final AtomicLong tranStateTableOffset = new AtomicLong(0); + // 定时回查线程 + private final Timer timer = new Timer("CheckTransactionMessageTimer", true); + public TransactionStateService(final DefaultMessageStore defaultMessageStore) { this.defaultMessageStore = defaultMessageStore; @@ -80,6 +86,15 @@ public boolean load() { } + public void start() { + + } + + + public void shutdown() { + } + + public int deleteExpiredStateFile(long offset) { int cnt = this.tranStateTable.deleteExpiredFileByOffset(offset, TSStoreUnitSize); return cnt; @@ -216,6 +231,76 @@ private void recoverStateTableNormal() { } + private void addTimerTask(final MapedFile mf) { + this.timer.scheduleAtFixedRate(new TimerTask() { + private final MapedFile mapedFile = mf; + private final TransactionCheckExecuter transactionCheckExecuter = + TransactionStateService.this.defaultMessageStore.getTransactionCheckExecuter(); + + + private long getTranStateOffset(final long currentIndex) { + long offset = this.mapedFile.getFileFromOffset() / TransactionStateService.TSStoreUnitSize; + offset += currentIndex; + return offset; + } + + + @Override + public void run() { + try { + SelectMapedBufferResult selectMapedBufferResult = mapedFile.selectMapedBuffer(0); + // TODO 回查事务延时时间需要优化 + if (selectMapedBufferResult != null) { + try { + for (long i = 0; i < selectMapedBufferResult.getSize(); i += TSStoreUnitSize) { + // Commit Log Offset + long clOffset = selectMapedBufferResult.getByteBuffer().getLong(); + // Message Size + int msgSize = selectMapedBufferResult.getByteBuffer().getInt(); + // Timestamp + int timestamp = selectMapedBufferResult.getByteBuffer().getInt(); + // Producer Group Hashcode + int groupHashCode = selectMapedBufferResult.getByteBuffer().getInt(); + // Transaction State + int tranType = selectMapedBufferResult.getByteBuffer().getInt(); + + long timestampLong = timestamp * 1000; + // TODO 判断间隔指定时间后再回查 + if (tranType != MessageSysFlag.TransactionPreparedType) { + continue; + } + + try { + this.transactionCheckExecuter.gotoCheck(// + groupHashCode,// + getTranStateOffset(i),// + clOffset,// + msgSize); + } + catch (Exception e) { + log.warn("", e); + } + } + } + finally { + selectMapedBufferResult.release(); + } + } + + if (mapedFile.isFull()) { + // 并且无Prepared事务 + + // this.cancel(); + } + } + catch (Exception e) { + log.error("", e); + } + } + }, 1000 * 60, 1000 * 60 * 3); + } + + /** * 单线程调用 */ @@ -231,6 +316,11 @@ public boolean appendPreparedTransaction(// return false; } + // 首次创建,加入定时任务中 + if (0 == mapedFile.getWrotePostion()) { + this.addTimerTask(mapedFile); + } + this.byteBufferAppend.position(0); this.byteBufferAppend.limit(TSStoreUnitSize); From c2b42a815129f0758e308c929e82c525e6c3070c Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Tue, 21 May 2013 18:04:20 +0800 Subject: [PATCH 019/894] =?UTF-8?q?#3=20=E5=AD=98=E5=82=A8=E5=B1=82?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E6=97=B6=EF=BC=8C=E8=A6=81=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E7=8A=B6=E6=80=81=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/alibaba/rocketmq/store/DefaultMessageStore.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java index f5f22630..3a61cd0c 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java @@ -930,6 +930,7 @@ public void start() throws Exception { this.reputMessageService.start(); } + this.transactionStateService.start(); this.haService.start(); this.createTempFile(); @@ -952,6 +953,8 @@ public void shutdown() { log.error("shutdown Exception, ", e); } + this.transactionStateService.shutdown(); + this.scheduleMessageService.shutdown(); this.haService.shutdown(); From 474f8ace51d03563a988772239dec7d52728b773 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Tue, 21 May 2013 20:21:57 +0800 Subject: [PATCH 020/894] =?UTF-8?q?#3=20=E5=90=AF=E5=8A=A8=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81=E6=9C=8D=E5=8A=A1=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E9=9C=80=E8=A6=81=E5=88=9D=E5=A7=8B=E5=8C=96Timer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../store/transaction/TransactionStateService.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java index 3ca93233..3172b088 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java @@ -23,7 +23,6 @@ import com.alibaba.rocketmq.store.MapedFile; import com.alibaba.rocketmq.store.MapedFileQueue; import com.alibaba.rocketmq.store.SelectMapedBufferResult; -import com.alibaba.rocketmq.store.schedule.ScheduleMessageService; /** @@ -86,8 +85,16 @@ public boolean load() { } - public void start() { + private void initTimerTask() { + final List mapedFiles = this.tranStateTable.getMapedFiles(); + for (MapedFile mf : mapedFiles) { + this.addTimerTask(mf); + } + } + + public void start() { + this.initTimerTask(); } From 4151ec85359d2038c9d31e1f0a0ec7b95e08d6df Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Tue, 21 May 2013 23:50:16 +0800 Subject: [PATCH 021/894] =?UTF-8?q?#3=20Producer=E6=9C=AC=E5=9C=B0Check?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=AF=A6=E7=BB=86=E7=9A=84=E7=94=A8=E6=88=B7=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/impl/ClientRemotingProcessor.java | 12 ++++++++++-- .../rocketmq/client/impl/MQClientAPIImpl.java | 5 +++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java index ee0d80c0..92efa97a 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java @@ -83,8 +83,15 @@ private void processTransactionState(// break; } + RemotingCommand request = + RemotingCommand.createRequestCommand(MQRequestCode.END_TRANSACTION_VALUE, thisHeader); + if (exception != null) { + request.setRemark("checkLocalTransactionState Exception: " + exception.toString() + ", " + + exception.getMessage()); + } + try { - mqClientFactory.getMQClientAPIImpl().endTransactionOneway(addr, thisHeader, 3000); + mqClientFactory.getMQClientAPIImpl().getRemotingClient().invokeOneway(addr, request, 3000); } catch (Exception e) { log.error("endTransactionOneway exception", e); @@ -116,7 +123,8 @@ public RemotingCommand checkTransactionState(ChannelHandlerContext ctx, Remoting transactionCheckListener.checkLocalTransactionState(messageExt); } catch (Throwable e) { - log.error("checkTransactionState, checkLocalTransactionState exception", e); + log.error( + "Broker call checkTransactionState, but checkLocalTransactionState exception", e); exception = e; } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java index cb3566e4..1cad503f 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java @@ -810,4 +810,9 @@ public void registerOrderTopic(final String topic, final String orderTopicString throw new MQClientException(response.getCode(), response.getRemark()); } + + + public RemotingClient getRemotingClient() { + return remotingClient; + } } From 783c4f57c9274ee176a9a22da03fb57b80b51aa8 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 00:11:54 +0800 Subject: [PATCH 022/894] =?UTF-8?q?#4=20=E4=B8=BARemoting=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E5=A2=9E=E5=8A=A0=E7=89=88=E6=9D=83=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/impl/ClientRemotingProcessor.java | 5 ----- .../rocketmq/remoting/ChannelEventListener.java | 17 ++++++++++++++++- .../rocketmq/remoting/CommandCustomHeader.java | 17 +++++++++++++++-- .../rocketmq/remoting/InvokeCallback.java | 17 +++++++++++++++-- .../rocketmq/remoting/RemotingClient.java | 15 +++++++++++++-- .../rocketmq/remoting/RemotingServer.java | 17 +++++++++++++++-- .../rocketmq/remoting/annotation/CFNotNull.java | 16 ++++++++++++++-- .../remoting/annotation/CFNullable.java | 16 ++++++++++++++-- .../alibaba/rocketmq/remoting/common/Pair.java | 17 +++++++++++++++-- .../remoting/common/RemotingHelper.java | 17 +++++++++++++++-- .../rocketmq/remoting/common/RemotingUtil.java | 14 +++++++++++++- .../common/SemaphoreReleaseOnlyOnce.java | 17 ++++++++++++++--- .../rocketmq/remoting/common/ServiceThread.java | 14 +++++++++++++- .../exception/RemotingCommandException.java | 17 +++++++++++++++-- .../exception/RemotingConnectException.java | 17 +++++++++++++++-- .../remoting/exception/RemotingException.java | 17 +++++++++++++++-- .../exception/RemotingSendRequestException.java | 17 +++++++++++++++-- .../exception/RemotingTimeoutException.java | 17 +++++++++++++++-- .../RemotingTooMuchRequestException.java | 17 +++++++++++++++-- 19 files changed, 262 insertions(+), 39 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java index 92efa97a..48986e05 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java @@ -1,6 +1,3 @@ -/** - * - */ package com.alibaba.rocketmq.client.impl; import io.netty.channel.ChannelHandlerContext; @@ -9,7 +6,6 @@ import org.slf4j.Logger; -import com.alibaba.rocketmq.client.exception.MQBrokerException; import com.alibaba.rocketmq.client.impl.factory.MQClientFactory; import com.alibaba.rocketmq.client.impl.producer.MQProducerInner; import com.alibaba.rocketmq.client.producer.LocalTransactionState; @@ -23,7 +19,6 @@ import com.alibaba.rocketmq.common.sysflag.MessageSysFlag; import com.alibaba.rocketmq.remoting.common.RemotingHelper; import com.alibaba.rocketmq.remoting.exception.RemotingCommandException; -import com.alibaba.rocketmq.remoting.exception.RemotingException; import com.alibaba.rocketmq.remoting.netty.NettyRequestProcessor; import com.alibaba.rocketmq.remoting.protocol.RemotingCommand; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/ChannelEventListener.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/ChannelEventListener.java index 7daeeef6..4629c811 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/ChannelEventListener.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/ChannelEventListener.java @@ -1,10 +1,25 @@ +/** + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting; import io.netty.channel.Channel; /** - * 监听Channel的事件,包括连接断开、连接建立 + * 监听Channel的事件,包括连接断开、连接建立、连接异常,传送这些事件到应用层 * * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/CommandCustomHeader.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/CommandCustomHeader.java index 20cf83a3..47af0e74 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/CommandCustomHeader.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/CommandCustomHeader.java @@ -1,5 +1,17 @@ /** - * $Id: CommandCustomHeader.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting; @@ -7,8 +19,9 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * RemotingCommand中自定义字段反射对象的公共接口 * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public interface CommandCustomHeader { public void checkFields() throws RemotingCommandException; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/InvokeCallback.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/InvokeCallback.java index e2d25980..6620a587 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/InvokeCallback.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/InvokeCallback.java @@ -1,5 +1,17 @@ /** - * $Id: InvokeCallback.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting; @@ -7,8 +19,9 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * 异步调用应答回调接口 * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public interface InvokeCallback { public void operationComplete(final ResponseFuture responseFuture); diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingClient.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingClient.java index 6ff8b6a8..a2ebed5f 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingClient.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingClient.java @@ -1,10 +1,21 @@ /** - * $Id: RemotingClient.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting; import java.util.List; -import java.util.Set; import java.util.concurrent.Executor; import com.alibaba.rocketmq.remoting.exception.RemotingConnectException; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingServer.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingServer.java index e56fecc5..07649ee8 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingServer.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingServer.java @@ -1,5 +1,17 @@ /** - * $Id: RemotingServer.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting; @@ -41,7 +53,8 @@ public void invokeAsync(final Channel channel, final RemotingCommand request, fi public void invokeOneway(final Channel channel, final RemotingCommand request, final long timeoutMillis) - throws InterruptedException, RemotingTooMuchRequestException, RemotingTimeoutException, RemotingSendRequestException; + throws InterruptedException, RemotingTooMuchRequestException, RemotingTimeoutException, + RemotingSendRequestException; public void shutdown(); diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNotNull.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNotNull.java index d28640fc..83568e39 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNotNull.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNotNull.java @@ -1,5 +1,17 @@ /** - * $Id: CFNotNull.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.annotation; @@ -11,9 +23,9 @@ /** + * 表示字段不允许为空 * * @author vintage.wang@gmail.com shijia.wxr@taobao.com - * */ @Documented @Retention(RetentionPolicy.CLASS) diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNullable.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNullable.java index 8ba5be37..385cc082 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNullable.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNullable.java @@ -1,5 +1,17 @@ /** - * $Id: CFNullable.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.annotation; @@ -11,9 +23,9 @@ /** + * 标识字段可以非空 * * @author vintage.wang@gmail.com shijia.wxr@taobao.com - * */ @Documented @Retention(RetentionPolicy.CLASS) diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/Pair.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/Pair.java index aa9617c3..7798b994 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/Pair.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/Pair.java @@ -1,11 +1,24 @@ /** - * $Id: Pair.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.common; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * 包装2个对象 * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public class Pair { private T1 object1; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingHelper.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingHelper.java index 2eb9508f..1b600d76 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingHelper.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingHelper.java @@ -1,5 +1,17 @@ /** - * $Id: RemotingHelper.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.common; @@ -30,8 +42,9 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * 通信层一些辅助方法 * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public class RemotingHelper { public static final String RemotingLogName = "RocketmqRemoting"; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingUtil.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingUtil.java index e81d84f7..f285a91d 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingUtil.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingUtil.java @@ -1,5 +1,17 @@ /** - * $Id: RemotingUtil.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.common; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java index 6c000742..596be23d 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java @@ -1,5 +1,17 @@ /** - * $Id: SemaphoreReleaseOnlyOnce.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.common; @@ -8,10 +20,9 @@ /** - * 保证只释放一次 + * 信号量保证只释放一次 * * @author vintage.wang@gmail.com shijia.wxr@taobao.com - * */ public class SemaphoreReleaseOnlyOnce { private final AtomicBoolean released = new AtomicBoolean(false); diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/ServiceThread.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/ServiceThread.java index 16dd415f..e51cc9e1 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/ServiceThread.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/ServiceThread.java @@ -1,5 +1,17 @@ /** - * $Id: ServiceThread.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.common; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingCommandException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingCommandException.java index d2aa6cc5..9ee12d81 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingCommandException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingCommandException.java @@ -1,11 +1,24 @@ /** - * $Id: RemotingCommandException.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.exception; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * 命令解析自定义字段时,校验字段有效性抛出异常 * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public class RemotingCommandException extends RemotingException { private static final long serialVersionUID = -6061365915274953096L; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingConnectException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingConnectException.java index 8b50ddc5..1f950bba 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingConnectException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingConnectException.java @@ -1,11 +1,24 @@ /** - * $Id: RemotingConnectException.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.exception; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * Client连接Server失败,抛出此异常 * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public class RemotingConnectException extends RemotingException { private static final long serialVersionUID = -5565366231695911316L; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingException.java index 2254d8ec..64f0b657 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingException.java @@ -1,11 +1,24 @@ /** - * $Id: RemotingException.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.exception; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * 通信层异常父类 * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public class RemotingException extends Exception { private static final long serialVersionUID = -5690687334570505110L; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingSendRequestException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingSendRequestException.java index 0d6a033c..01d4d7fb 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingSendRequestException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingSendRequestException.java @@ -1,11 +1,24 @@ /** - * $Id: RemotingSendRequestException.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.exception; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * RPC调用中,客户端发送请求失败,抛出此异常 * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public class RemotingSendRequestException extends RemotingException { private static final long serialVersionUID = 5391285827332471674L; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTimeoutException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTimeoutException.java index 406e1a3d..9a927948 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTimeoutException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTimeoutException.java @@ -1,11 +1,24 @@ /** - * $Id: RemotingTimeoutException.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.exception; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * RPC调用超时异常 * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public class RemotingTimeoutException extends RemotingException { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTooMuchRequestException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTooMuchRequestException.java index 46e3d7fc..a1216390 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTooMuchRequestException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTooMuchRequestException.java @@ -1,11 +1,24 @@ /** - * $Id: RemotingTooMuchRequestException.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + * Copyright (C) 2010-2013 Alibaba Group Holding Limited + * + * Licensed 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 com.alibaba.rocketmq.remoting.exception; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * 异步调用或者Oneway调用,堆积的请求超过信号量最大值 * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public class RemotingTooMuchRequestException extends RemotingException { private static final long serialVersionUID = 4326919581254519654L; From 45f2eeea3aa99b9bfe8a76055902f01fa3fb562c Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 10:12:30 +0800 Subject: [PATCH 023/894] =?UTF-8?q?fixed=20#24=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=9B=B4=E6=96=B0Transaction=20State=20Table=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E6=A0=A1=E9=AA=8CCommit=20Log=20Offset=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/alibaba/rocketmq/store/DefaultMessageStore.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java index 3a61cd0c..b089da62 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java @@ -557,15 +557,17 @@ private void doDispatch() { break; case MessageSysFlag.TransactionPreparedType: // 将Prepared事务记录下来 - DefaultMessageStore.this.getTransactionStateService().appendPreparedTransaction( - req.getCommitLogOffset(), req.getMsgSize(), (int) (req.getStoreTimestamp() / 1000), + DefaultMessageStore.this.getTransactionStateService().appendPreparedTransaction(// + req.getCommitLogOffset(),// + req.getMsgSize(),// + (int) (req.getStoreTimestamp() / 1000),// req.getProducerGroup().hashCode()); break; case MessageSysFlag.TransactionCommitType: case MessageSysFlag.TransactionRollbackType: DefaultMessageStore.this.getTransactionStateService().updateTransactionState(// req.getTranStateTableOffset(),// - req.getCommitLogOffset(),// + req.getPreparedTransactionOffset(),// req.getProducerGroup().hashCode(),// tranType// ); From 82438c3f849cbc9821c074cea47329020a451498 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 11:33:33 +0800 Subject: [PATCH 024/894] =?UTF-8?q?#25=20=E4=BC=98=E5=8C=96=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E7=B4=A2=E5=BC=95=E5=88=B7=E7=9B=98=E6=9C=BA=E5=88=B6?= =?UTF-8?q?=EF=BC=8C=E4=B8=80=E6=AC=A1=E5=8F=AA=E5=88=B7=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/store/index/IndexService.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java index 2001cb11..08d4a121 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java @@ -97,6 +97,7 @@ public boolean load(final boolean lastExitOK) { */ public IndexFile getAndCreateLastIndexFile() { IndexFile indexFile = null; + IndexFile prevIndexFile = null; long lastUpdateEndPhyOffset = 0; long lastUpdateIndexTimestamp = 0; // 先尝试使用读锁 @@ -110,6 +111,7 @@ public IndexFile getAndCreateLastIndexFile() { else { lastUpdateEndPhyOffset = tmp.getEndPhyOffset(); lastUpdateIndexTimestamp = tmp.getEndTimestamp(); + prevIndexFile = tmp; } } @@ -135,12 +137,13 @@ public IndexFile getAndCreateLastIndexFile() { this.readWriteLock.writeLock().unlock(); } - // 每创建一个新文件,刷一次盘 + // 每创建一个新文件,之前文件要刷盘 if (indexFile != null) { + final IndexFile flushThisFile = prevIndexFile; Thread flushThread = new Thread(new Runnable() { @Override public void run() { - IndexService.this.flush(); + IndexService.this.flush(flushThisFile); } }, "FlushIndexFileThread"); @@ -234,6 +237,23 @@ public void destroy() { } + public void flush(final IndexFile f) { + if (null == f) + return; + + long indexMsgTimestamp = 0; + + if (f.isWriteFull()) { + indexMsgTimestamp = f.getEndTimestamp(); + } + + f.flush(); + + this.defaultMessageStore.getStoreCheckpoint().setIndexMsgTimestamp(indexMsgTimestamp); + this.defaultMessageStore.getStoreCheckpoint().flush(); + } + + public void flush() { ArrayList indexFileListClone = null; try { From e3ee7f73d59c374a6387efc6667c471495736e76 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 11:36:53 +0800 Subject: [PATCH 025/894] =?UTF-8?q?fixed=20#25=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E7=B4=A2=E5=BC=95=E5=88=B7=E7=9B=98=E6=9C=BA?= =?UTF-8?q?=E5=88=B6=EF=BC=8C=E4=B8=80=E6=AC=A1=E5=8F=AA=E5=88=B7=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/store/index/IndexService.java | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java index 08d4a121..b0a3e92d 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java @@ -253,37 +253,37 @@ public void flush(final IndexFile f) { this.defaultMessageStore.getStoreCheckpoint().flush(); } - - public void flush() { - ArrayList indexFileListClone = null; - try { - this.readWriteLock.readLock().lock(); - indexFileListClone = (ArrayList) this.indexFileList.clone(); - } - catch (Exception e) { - log.error("flush exception", e); - } - finally { - this.readWriteLock.readLock().unlock(); - } - - long indexMsgTimestamp = 0; - - if (indexFileListClone != null) { - for (IndexFile f : indexFileListClone) { - if (f.isWriteFull()) { - indexMsgTimestamp = f.getEndTimestamp(); - } - - f.flush(); - } - } - - this.defaultMessageStore.getStoreCheckpoint().setIndexMsgTimestamp(indexMsgTimestamp); - this.defaultMessageStore.getStoreCheckpoint().flush(); - } - - + + + // public void flush() { + // ArrayList indexFileListClone = null; + // try { + // this.readWriteLock.readLock().lock(); + // indexFileListClone = (ArrayList) this.indexFileList.clone(); + // } + // catch (Exception e) { + // log.error("flush exception", e); + // } + // finally { + // this.readWriteLock.readLock().unlock(); + // } + // + // long indexMsgTimestamp = 0; + // + // if (indexFileListClone != null) { + // for (IndexFile f : indexFileListClone) { + // if (f.isWriteFull()) { + // indexMsgTimestamp = f.getEndTimestamp(); + // } + // + // f.flush(); + // } + // } + // + // this.defaultMessageStore.getStoreCheckpoint().setIndexMsgTimestamp(indexMsgTimestamp); + // this.defaultMessageStore.getStoreCheckpoint().flush(); + // } + public QueryOffsetResult queryOffset(String topic, String key, int maxNum, long begin, long end) { List phyOffsets = new ArrayList(maxNum); // TODO 可能需要返回给最终用户 From aed2b88905ec3945218f59f07a62abb3f5901c48 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 14:38:07 +0800 Subject: [PATCH 026/894] =?UTF-8?q?#3=20=E4=BC=98=E5=8C=96Oneway=E5=BD=A2?= =?UTF-8?q?=E5=BC=8F=E8=B0=83=E7=94=A8=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=BB=B6?= =?UTF-8?q?=E6=97=B6Check=E7=9B=B8=E5=85=B3=E9=85=8D=E7=BD=AE=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy.bat | 1 + .../remoting/netty/NettyRemotingAbstract.java | 12 +++++++----- .../rocketmq/store/config/MessageStoreConfig.java | 3 +++ 3 files changed, 11 insertions(+), 5 deletions(-) create mode 100644 deploy.bat diff --git a/deploy.bat b/deploy.bat new file mode 100644 index 00000000..b3334f03 --- /dev/null +++ b/deploy.bat @@ -0,0 +1 @@ +mvn -Dmaven.test.skip=true deploy \ No newline at end of file diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java index 3a724e53..4b381172 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java @@ -200,11 +200,13 @@ public void operationComplete(ChannelFuture future) throws Exception { plog.warn(RemotingHelper.parseChannelRemoteAddr(ctx.channel()) + ", system thread pool busy, RejectedExecutionException " + pair.getObject2().toString()); - try { - Thread.sleep(2); - } - catch (InterruptedException e1) { - plog.error("", e1); + if (!cmd.isOnewayRPC()) { + try { + Thread.sleep(2); + } + catch (InterruptedException e1) { + plog.error("", e1); + } } } } diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java index 9b5c2c33..2c049b39 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java @@ -118,6 +118,9 @@ public class MessageStoreConfig { + File.separator + "transaction" + File.separator + "redolog"; private int tranRedoLogMapedFileSize = 2000000 * ConsumeQueue.CQStoreUnitSize; + // 事务回查间隔时间 + private long checkTransactionMessageInterval = 1000 * 60 * 3; + public int getMapedFileSizeCommitLog() { return mapedFileSizeCommitLog; From c9c3659d5e08ca4f0ee2c36c2671f5c6f6619f16 Mon Sep 17 00:00:00 2001 From: "jin.qian" Date: Wed, 22 May 2013 15:23:24 +0800 Subject: [PATCH 027/894] =?UTF-8?q?=E6=94=B9=E5=8F=98=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/SendMessageProcessor.java | 494 +++++++++--------- 1 file changed, 247 insertions(+), 247 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java index d50e4347..a57ec022 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java @@ -1,247 +1,247 @@ -/** - * $Id: SendMessageProcessor.java 1831 2013-05-16 01:39:51Z shijia.wxr $ - */ -package com.alibaba.rocketmq.broker.processor; - -import io.netty.channel.ChannelFuture; -import io.netty.channel.ChannelFutureListener; -import io.netty.channel.ChannelHandlerContext; - -import java.net.InetSocketAddress; -import java.net.SocketAddress; -import java.util.Random; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.alibaba.rocketmq.broker.BrokerController; -import com.alibaba.rocketmq.common.MessageDecoder; -import com.alibaba.rocketmq.common.MixAll; -import com.alibaba.rocketmq.common.TopicConfig; -import com.alibaba.rocketmq.common.TopicFilterType; -import com.alibaba.rocketmq.common.protocol.MQProtos.MQResponseCode; -import com.alibaba.rocketmq.common.protocol.header.SendMessageRequestHeader; -import com.alibaba.rocketmq.common.protocol.header.SendMessageResponseHeader; -import com.alibaba.rocketmq.common.sysflag.MessageSysFlag; -import com.alibaba.rocketmq.remoting.exception.RemotingCommandException; -import com.alibaba.rocketmq.remoting.netty.NettyRequestProcessor; -import com.alibaba.rocketmq.remoting.protocol.RemotingCommand; -import com.alibaba.rocketmq.remoting.protocol.RemotingProtos.ResponseCode; -import com.alibaba.rocketmq.store.MessageExtBrokerInner; -import com.alibaba.rocketmq.store.PutMessageResult; - - -/** - * 处理客户端发送消息的请求 - * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com - * - */ -public class SendMessageProcessor implements NettyRequestProcessor { - private static final Logger log = LoggerFactory.getLogger(MixAll.BrokerLoggerName); - - private final BrokerController brokerController; - private final Random random = new Random(System.currentTimeMillis()); - private final SocketAddress storeHost; - - - public SendMessageProcessor(final BrokerController brokerController) { - this.brokerController = brokerController; - this.storeHost = - new InetSocketAddress(brokerController.getBrokerConfig().getBrokerIP1(), brokerController - .getNettyServerConfig().getListenPort()); - } - - - @Override - public RemotingCommand processRequest(final ChannelHandlerContext ctx, final RemotingCommand request) - throws RemotingCommandException { - final RemotingCommand response = RemotingCommand.createResponseCommand(SendMessageResponseHeader.class); - final SendMessageResponseHeader responseHeader = (SendMessageResponseHeader) response.getCustomHeader(); - final SendMessageRequestHeader requestHeader = - (SendMessageRequestHeader) request.decodeCommandCustomHeader(SendMessageRequestHeader.class); - - // 由于有直接返回的逻辑,所以必须要设置 - response.setOpaque(request.getOpaque()); - - if (log.isDebugEnabled()) { - log.debug("receive SendMessage request command, " + request); - } - - // 检查Broker权限 - if (!MixAll.isWriteable(this.brokerController.getBrokerConfig().getBrokerPermission())) { - response.setCode(MQResponseCode.NO_PERMISSION_VALUE); - response.setRemark("the broker[" + this.brokerController.getBrokerConfig().getBrokerIP1() - + "] sending message is forbidden"); - return response; - } - - final byte[] body = request.getBody(); - - // Topic名字是否与保留字段冲突 - if (!this.brokerController.getTopicConfigManager().isTopicCanSendMessage(requestHeader.getTopic())) { - String errorMsg = - "the topic[" + requestHeader.getTopic() + "] is conflict with system reserved words."; - log.warn(errorMsg); - response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); - response.setRemark(errorMsg); - return response; - } - - // 检查topic是否存在 - TopicConfig topicConfig = - this.brokerController.getTopicConfigManager().selectTopicConfig(requestHeader.getTopic()); - if (null == topicConfig) { - log.error("the topic " + requestHeader.getTopic() + " not exist, producer: " - + ctx.channel().remoteAddress()); - topicConfig = - this.brokerController.getTopicConfigManager().createTopicInSendMessageMethod( - requestHeader.getTopic(), requestHeader.getDefaultTopic(), ctx, - requestHeader.getDefaultTopicQueueNums()); - if (null == topicConfig) { - response.setCode(MQResponseCode.TOPIC_NOT_EXIST_VALUE); - response.setRemark("topic not exist, apply first please!"); - return response; - } - } - - // 检查topic权限 - if (!MixAll.isWriteable(topicConfig.getPerm())) { - response.setCode(MQResponseCode.NO_PERMISSION_VALUE); - response.setRemark("the topic[" + requestHeader.getTopic() + "] sending message is forbidden"); - return response; - } - - // 检查队列有效性 - int queueIdInt = requestHeader.getQueueId(); - if (queueIdInt >= topicConfig.getWriteQueueNums()) { - String errorInfo = - "queueId[" + queueIdInt + "] is illagal, topicConfig.writeQueueNums: " - + topicConfig.getWriteQueueNums() + " producer: " + ctx.channel().remoteAddress(); - log.warn(errorInfo); - response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); - response.setRemark(errorInfo); - return response; - } - - // 随机指定一个队列 - if (queueIdInt < 0) { - queueIdInt = Math.abs(this.random.nextInt()) % topicConfig.getWriteQueueNums(); - } - - int sysFlag = requestHeader.getSysFlag(); - // 多标签过滤需要置位 - if (TopicFilterType.MULTI_TAG == topicConfig.getTopicFilterType()) { - sysFlag |= MessageSysFlag.MultiTagsFlag; - } - - MessageExtBrokerInner msgInner = new MessageExtBrokerInner(); - msgInner.setTopic(requestHeader.getTopic()); - msgInner.setBody(body); - msgInner.setFlag(requestHeader.getFlag()); - msgInner.setProperties(MessageDecoder.string2messageProperties(requestHeader.getProperties())); - msgInner.setPropertiesString(requestHeader.getProperties()); - msgInner.setTagsCode(MessageExtBrokerInner.tagsString2tagsCode(topicConfig.getTopicFilterType(), - msgInner.getTags())); - - msgInner.setQueueId(queueIdInt); - msgInner.setSysFlag(sysFlag); - msgInner.setBornTimestamp(requestHeader.getBornTimestamp()); - msgInner.setBornHost(ctx.channel().remoteAddress()); - msgInner.setStoreHost(this.getStoreHost()); - - msgInner.setReconsumeTimes(0); - - PutMessageResult putMessageResult = this.brokerController.getMessageStore().putMessage(msgInner); - if (putMessageResult != null) { - boolean sendOK = false; - - switch (putMessageResult.getPutMessageStatus()) { - // Success - case PUT_OK: - sendOK = true; - response.setCode(ResponseCode.SUCCESS_VALUE); - break; - case FLUSH_DISK_TIMEOUT: - response.setCode(MQResponseCode.FLUSH_DISK_TIMEOUT_VALUE); - sendOK = true; - break; - case FLUSH_SLAVE_TIMEOUT: - response.setCode(MQResponseCode.FLUSH_SLAVE_TIMEOUT_VALUE); - sendOK = true; - break; - case SLAVE_NOT_AVAILABLE: - response.setCode(MQResponseCode.SLAVE_NOT_AVAILABLE_VALUE); - sendOK = true; - break; - - // Failed - case CREATE_MAPEDFILE_FAILED: - response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); - response.setRemark("create maped file failed."); - break; - case MESSAGE_ILLEGAL: - response.setCode(MQResponseCode.MESSAGE_ILLEGAL_VALUE); - response.setRemark("the message is illegal, maybe length not matched."); - break; - case SERVICE_NOT_AVAILABLE: - response.setCode(MQResponseCode.SERVICE_NOT_AVAILABLE_VALUE); - response.setRemark("service not available now."); - break; - case UNKNOWN_ERROR: - response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); - response.setRemark("UNKNOWN_ERROR"); - break; - default: - response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); - response.setRemark("UNKNOWN_ERROR DEFAULT"); - break; - } - - if (sendOK) { - response.setRemark(null); - - responseHeader.setMsgId(putMessageResult.getAppendMessageResult().getMsgId()); - responseHeader.setQueueId(queueIdInt); - responseHeader.setQueueOffset(putMessageResult.getAppendMessageResult().getLogicsOffset()); - - // 直接返回 - try { - ctx.write(response).addListener(new ChannelFutureListener() { - @Override - public void operationComplete(ChannelFuture future) throws Exception { - if (!future.isSuccess()) { - log.error("SendMessageProcessor response to " + future.channel().remoteAddress() - + " failed", future.cause()); - log.error(request.toString()); - log.error(response.toString()); - } - } - }); - } - catch (Throwable e) { - log.error("SendMessageProcessor process request over, but response failed", e); - log.error(request.toString()); - log.error(response.toString()); - } - - this.brokerController.getPullRequestHoldService().notifyMessageArriving(requestHeader.getTopic(), - queueIdInt, putMessageResult.getAppendMessageResult().getLogicsOffset()); - - return null; - } - } - else { - response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); - response.setRemark("store putMessage return null"); - } - - return response; - } - - - public SocketAddress getStoreHost() { - return storeHost; - } - -} +/** + * $Id: SendMessageProcessor.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + */ +package com.alibaba.rocketmq.broker.processor; + +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelFutureListener; +import io.netty.channel.ChannelHandlerContext; + +import java.net.InetSocketAddress; +import java.net.SocketAddress; +import java.util.Random; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.alibaba.rocketmq.broker.BrokerController; +import com.alibaba.rocketmq.common.MessageDecoder; +import com.alibaba.rocketmq.common.MixAll; +import com.alibaba.rocketmq.common.TopicConfig; +import com.alibaba.rocketmq.common.TopicFilterType; +import com.alibaba.rocketmq.common.protocol.MQProtos.MQResponseCode; +import com.alibaba.rocketmq.common.protocol.header.SendMessageRequestHeader; +import com.alibaba.rocketmq.common.protocol.header.SendMessageResponseHeader; +import com.alibaba.rocketmq.common.sysflag.MessageSysFlag; +import com.alibaba.rocketmq.remoting.exception.RemotingCommandException; +import com.alibaba.rocketmq.remoting.netty.NettyRequestProcessor; +import com.alibaba.rocketmq.remoting.protocol.RemotingCommand; +import com.alibaba.rocketmq.remoting.protocol.RemotingProtos.ResponseCode; +import com.alibaba.rocketmq.store.MessageExtBrokerInner; +import com.alibaba.rocketmq.store.PutMessageResult; + + +/** + * 处理客户端发送消息的请求 + * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * + */ +public class SendMessageProcessor implements NettyRequestProcessor { + private static final Logger log = LoggerFactory.getLogger(MixAll.BrokerLoggerName); + + private final BrokerController brokerController; + private final Random random = new Random(System.currentTimeMillis()); + private final SocketAddress storeHost; + + + public SendMessageProcessor(final BrokerController brokerController) { + this.brokerController = brokerController; + this.storeHost = + new InetSocketAddress(brokerController.getBrokerConfig().getBrokerIP1(), brokerController + .getNettyServerConfig().getListenPort()); + } + + + @Override + public RemotingCommand processRequest(final ChannelHandlerContext ctx, final RemotingCommand request) + throws RemotingCommandException { + final RemotingCommand response = RemotingCommand.createResponseCommand(SendMessageResponseHeader.class); + final SendMessageResponseHeader responseHeader = (SendMessageResponseHeader) response.getCustomHeader(); + final SendMessageRequestHeader requestHeader = + (SendMessageRequestHeader) request.decodeCommandCustomHeader(SendMessageRequestHeader.class); + + // 由于有直接返回的逻辑,所以必须要设置 + response.setOpaque(request.getOpaque()); + + if (log.isDebugEnabled()) { + log.debug("receive SendMessage request command, " + request); + } + + // 检查Broker权限 + if (!MixAll.isWriteable(this.brokerController.getBrokerConfig().getBrokerPermission())) { + response.setCode(MQResponseCode.NO_PERMISSION_VALUE); + response.setRemark("the broker[" + this.brokerController.getBrokerConfig().getBrokerIP1() + + "] sending message is forbidden"); + return response; + } + + final byte[] body = request.getBody(); + + // Topic名字是否与保留字段冲突 + if (!this.brokerController.getTopicConfigManager().isTopicCanSendMessage(requestHeader.getTopic())) { + String errorMsg = + "the topic[" + requestHeader.getTopic() + "] is conflict with system reserved words."; + log.warn(errorMsg); + response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); + response.setRemark(errorMsg); + return response; + } + + // 检查topic是否存在 + TopicConfig topicConfig = + this.brokerController.getTopicConfigManager().selectTopicConfig(requestHeader.getTopic()); + if (null == topicConfig) { + log.warn("the topic " + requestHeader.getTopic() + " not exist, producer: " + + ctx.channel().remoteAddress()); + topicConfig = + this.brokerController.getTopicConfigManager().createTopicInSendMessageMethod( + requestHeader.getTopic(), requestHeader.getDefaultTopic(), ctx, + requestHeader.getDefaultTopicQueueNums()); + if (null == topicConfig) { + response.setCode(MQResponseCode.TOPIC_NOT_EXIST_VALUE); + response.setRemark("topic not exist, apply first please!"); + return response; + } + } + + // 检查topic权限 + if (!MixAll.isWriteable(topicConfig.getPerm())) { + response.setCode(MQResponseCode.NO_PERMISSION_VALUE); + response.setRemark("the topic[" + requestHeader.getTopic() + "] sending message is forbidden"); + return response; + } + + // 检查队列有效性 + int queueIdInt = requestHeader.getQueueId(); + if (queueIdInt >= topicConfig.getWriteQueueNums()) { + String errorInfo = + "queueId[" + queueIdInt + "] is illagal, topicConfig.writeQueueNums: " + + topicConfig.getWriteQueueNums() + " producer: " + ctx.channel().remoteAddress(); + log.warn(errorInfo); + response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); + response.setRemark(errorInfo); + return response; + } + + // 随机指定一个队列 + if (queueIdInt < 0) { + queueIdInt = Math.abs(this.random.nextInt()) % topicConfig.getWriteQueueNums(); + } + + int sysFlag = requestHeader.getSysFlag(); + // 多标签过滤需要置位 + if (TopicFilterType.MULTI_TAG == topicConfig.getTopicFilterType()) { + sysFlag |= MessageSysFlag.MultiTagsFlag; + } + + MessageExtBrokerInner msgInner = new MessageExtBrokerInner(); + msgInner.setTopic(requestHeader.getTopic()); + msgInner.setBody(body); + msgInner.setFlag(requestHeader.getFlag()); + msgInner.setProperties(MessageDecoder.string2messageProperties(requestHeader.getProperties())); + msgInner.setPropertiesString(requestHeader.getProperties()); + msgInner.setTagsCode(MessageExtBrokerInner.tagsString2tagsCode(topicConfig.getTopicFilterType(), + msgInner.getTags())); + + msgInner.setQueueId(queueIdInt); + msgInner.setSysFlag(sysFlag); + msgInner.setBornTimestamp(requestHeader.getBornTimestamp()); + msgInner.setBornHost(ctx.channel().remoteAddress()); + msgInner.setStoreHost(this.getStoreHost()); + + msgInner.setReconsumeTimes(0); + + PutMessageResult putMessageResult = this.brokerController.getMessageStore().putMessage(msgInner); + if (putMessageResult != null) { + boolean sendOK = false; + + switch (putMessageResult.getPutMessageStatus()) { + // Success + case PUT_OK: + sendOK = true; + response.setCode(ResponseCode.SUCCESS_VALUE); + break; + case FLUSH_DISK_TIMEOUT: + response.setCode(MQResponseCode.FLUSH_DISK_TIMEOUT_VALUE); + sendOK = true; + break; + case FLUSH_SLAVE_TIMEOUT: + response.setCode(MQResponseCode.FLUSH_SLAVE_TIMEOUT_VALUE); + sendOK = true; + break; + case SLAVE_NOT_AVAILABLE: + response.setCode(MQResponseCode.SLAVE_NOT_AVAILABLE_VALUE); + sendOK = true; + break; + + // Failed + case CREATE_MAPEDFILE_FAILED: + response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); + response.setRemark("create maped file failed."); + break; + case MESSAGE_ILLEGAL: + response.setCode(MQResponseCode.MESSAGE_ILLEGAL_VALUE); + response.setRemark("the message is illegal, maybe length not matched."); + break; + case SERVICE_NOT_AVAILABLE: + response.setCode(MQResponseCode.SERVICE_NOT_AVAILABLE_VALUE); + response.setRemark("service not available now."); + break; + case UNKNOWN_ERROR: + response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); + response.setRemark("UNKNOWN_ERROR"); + break; + default: + response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); + response.setRemark("UNKNOWN_ERROR DEFAULT"); + break; + } + + if (sendOK) { + response.setRemark(null); + + responseHeader.setMsgId(putMessageResult.getAppendMessageResult().getMsgId()); + responseHeader.setQueueId(queueIdInt); + responseHeader.setQueueOffset(putMessageResult.getAppendMessageResult().getLogicsOffset()); + + // 直接返回 + try { + ctx.write(response).addListener(new ChannelFutureListener() { + @Override + public void operationComplete(ChannelFuture future) throws Exception { + if (!future.isSuccess()) { + log.error("SendMessageProcessor response to " + future.channel().remoteAddress() + + " failed", future.cause()); + log.error(request.toString()); + log.error(response.toString()); + } + } + }); + } + catch (Throwable e) { + log.error("SendMessageProcessor process request over, but response failed", e); + log.error(request.toString()); + log.error(response.toString()); + } + + this.brokerController.getPullRequestHoldService().notifyMessageArriving(requestHeader.getTopic(), + queueIdInt, putMessageResult.getAppendMessageResult().getLogicsOffset()); + + return null; + } + } + else { + response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); + response.setRemark("store putMessage return null"); + } + + return response; + } + + + public SocketAddress getStoreHost() { + return storeHost; + } + +} From 083c14b9b5e5df2f38990405f1e1901a46b3424c Mon Sep 17 00:00:00 2001 From: "jin.qian" Date: Wed, 22 May 2013 15:35:45 +0800 Subject: [PATCH 028/894] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E5=A4=B4string=20?= =?UTF-8?q?=E4=B8=ADmsgFoundlist=E7=A9=BA=E6=8C=87=E9=92=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/client/consumer/PullResult.java | 140 +++++++++--------- 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullResult.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullResult.java index 0d91c909..c5b8f76d 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullResult.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullResult.java @@ -1,70 +1,70 @@ -/** - * $Id: PullResult.java 1831 2013-05-16 01:39:51Z shijia.wxr $ - */ -package com.alibaba.rocketmq.client.consumer; - -import java.util.List; - -import com.alibaba.rocketmq.common.MessageExt; - - -/** - * 拉消息返回结果 - * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com - */ -public class PullResult { - private final PullStatus pullStatus; - private final long nextBeginOffset; - private final long minOffset; - private final long maxOffset; - private List msgFoundList; - - - public PullResult(PullStatus pullStatus, long nextBeginOffset, long minOffset, long maxOffset, - List msgFoundList) { - super(); - this.pullStatus = pullStatus; - this.nextBeginOffset = nextBeginOffset; - this.minOffset = minOffset; - this.maxOffset = maxOffset; - this.msgFoundList = msgFoundList; - } - - - public PullStatus getPullStatus() { - return pullStatus; - } - - - public long getNextBeginOffset() { - return nextBeginOffset; - } - - - public long getMinOffset() { - return minOffset; - } - - - public long getMaxOffset() { - return maxOffset; - } - - - public List getMsgFoundList() { - return msgFoundList; - } - - - public void setMsgFoundList(List msgFoundList) { - this.msgFoundList = msgFoundList; - } - - - @Override - public String toString() { - return "PullResult [pullStatus=" + pullStatus + ", nextBeginOffset=" + nextBeginOffset + ", minOffset=" - + minOffset + ", maxOffset=" + maxOffset + ", msgFoundList=" + msgFoundList.size() + "]"; - } -} +/** + * $Id: PullResult.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + */ +package com.alibaba.rocketmq.client.consumer; + +import java.util.List; + +import com.alibaba.rocketmq.common.MessageExt; + + +/** + * 拉消息返回结果 + * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class PullResult { + private final PullStatus pullStatus; + private final long nextBeginOffset; + private final long minOffset; + private final long maxOffset; + private List msgFoundList; + + + public PullResult(PullStatus pullStatus, long nextBeginOffset, long minOffset, long maxOffset, + List msgFoundList) { + super(); + this.pullStatus = pullStatus; + this.nextBeginOffset = nextBeginOffset; + this.minOffset = minOffset; + this.maxOffset = maxOffset; + this.msgFoundList = msgFoundList; + } + + + public PullStatus getPullStatus() { + return pullStatus; + } + + + public long getNextBeginOffset() { + return nextBeginOffset; + } + + + public long getMinOffset() { + return minOffset; + } + + + public long getMaxOffset() { + return maxOffset; + } + + + public List getMsgFoundList() { + return msgFoundList; + } + + + public void setMsgFoundList(List msgFoundList) { + this.msgFoundList = msgFoundList; + } + + + @Override + public String toString() { + return "PullResult [pullStatus=" + pullStatus + ", nextBeginOffset=" + nextBeginOffset + ", minOffset=" + + minOffset + ", maxOffset=" + maxOffset + ", msgFoundList=" + (msgFoundList==null?0:msgFoundList.size()) + "]"; + } +} From 3cd7aba614619491150a621e6324d314b4dcc729 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 15:49:59 +0800 Subject: [PATCH 029/894] =?UTF-8?q?fixed=20#3=20=E4=B8=BA=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1=E6=B6=88=E6=81=AF=E5=BB=B6=E6=97=B6Check=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E4=BC=98=E5=8C=96=EF=BC=8C=E4=BA=8B=E5=8A=A1=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=BC=80=E5=8F=91=E5=AE=8C=E6=88=90=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/log4j_broker.xml | 4 +- .../store/config/MessageStoreConfig.java | 26 +++++++++- .../transaction/TransactionStateService.java | 51 ++++++++++++++----- 3 files changed, 65 insertions(+), 16 deletions(-) diff --git a/conf/log4j_broker.xml b/conf/log4j_broker.xml index 0ebf972f..663a7219 100644 --- a/conf/log4j_broker.xml +++ b/conf/log4j_broker.xml @@ -30,12 +30,12 @@ - ${user.home}/rocketmqlogs/rocketmq_rransaction.log + ${user.home}/rocketmqlogs/rocketmq_transaction.log true ${user.home}/rocketmqlogs/otherdays/rocketmq_transaction-%d{yyyy-MM-dd}.%i.log - 33554432 + 1073741824 diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java index 2c049b39..6cb734ba 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java @@ -118,8 +118,10 @@ public class MessageStoreConfig { + File.separator + "transaction" + File.separator + "redolog"; private int tranRedoLogMapedFileSize = 2000000 * ConsumeQueue.CQStoreUnitSize; - // 事务回查间隔时间 - private long checkTransactionMessageInterval = 1000 * 60 * 3; + // 事务回查至少间隔时间 + private long checkTransactionMessageAtleastInterval = 1000 * 60 * 6; + // 事务回查定时间隔时间 + private long checkTransactionMessageTimerInterval = 1000 * 60 * 3; public int getMapedFileSizeCommitLog() { @@ -633,4 +635,24 @@ public int getTranRedoLogMapedFileSize() { public void setTranRedoLogMapedFileSize(int tranRedoLogMapedFileSize) { this.tranRedoLogMapedFileSize = tranRedoLogMapedFileSize; } + + + public long getCheckTransactionMessageAtleastInterval() { + return checkTransactionMessageAtleastInterval; + } + + + public void setCheckTransactionMessageAtleastInterval(long checkTransactionMessageAtleastInterval) { + this.checkTransactionMessageAtleastInterval = checkTransactionMessageAtleastInterval; + } + + + public long getCheckTransactionMessageTimerInterval() { + return checkTransactionMessageTimerInterval; + } + + + public void setCheckTransactionMessageTimerInterval(long checkTransactionMessageTimerInterval) { + this.checkTransactionMessageTimerInterval = checkTransactionMessageTimerInterval; + } } diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java index 3172b088..84d8ed14 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java @@ -237,12 +237,17 @@ private void recoverStateTableNormal() { } } + private static final Logger tranlog = LoggerFactory.getLogger(MixAll.TransactionLoggerName); + private void addTimerTask(final MapedFile mf) { this.timer.scheduleAtFixedRate(new TimerTask() { private final MapedFile mapedFile = mf; private final TransactionCheckExecuter transactionCheckExecuter = TransactionStateService.this.defaultMessageStore.getTransactionCheckExecuter(); + private final long checkTransactionMessageAtleastInterval = + TransactionStateService.this.defaultMessageStore.getMessageStoreConfig() + .getCheckTransactionMessageAtleastInterval(); private long getTranStateOffset(final long currentIndex) { @@ -255,11 +260,15 @@ private long getTranStateOffset(final long currentIndex) { @Override public void run() { try { + long preparedMessageCountInThisMapedFile = 0; + SelectMapedBufferResult selectMapedBufferResult = mapedFile.selectMapedBuffer(0); - // TODO 回查事务延时时间需要优化 if (selectMapedBufferResult != null) { try { - for (long i = 0; i < selectMapedBufferResult.getSize(); i += TSStoreUnitSize) { + int i = 0; + for (; i < selectMapedBufferResult.getSize(); i += TSStoreUnitSize) { + selectMapedBufferResult.getByteBuffer().position(i); + // Commit Log Offset long clOffset = selectMapedBufferResult.getByteBuffer().getLong(); // Message Size @@ -271,12 +280,20 @@ public void run() { // Transaction State int tranType = selectMapedBufferResult.getByteBuffer().getInt(); - long timestampLong = timestamp * 1000; - // TODO 判断间隔指定时间后再回查 + // 已经提交或者回滚的消息跳过 if (tranType != MessageSysFlag.TransactionPreparedType) { continue; } + // 遇到时间不符合,终止 + long timestampLong = timestamp * 1000; + long diff = System.currentTimeMillis() - timestampLong; + if (diff < checkTransactionMessageAtleastInterval) { + break; + } + + preparedMessageCountInThisMapedFile++; + try { this.transactionCheckExecuter.gotoCheck(// groupHashCode,// @@ -285,26 +302,36 @@ public void run() { msgSize); } catch (Exception e) { - log.warn("", e); + tranlog.warn("gotoCheck Exception", e); } } + + // 无Prepared消息,且遍历完,则终止定时任务 + if (0 == preparedMessageCountInThisMapedFile // + && i == mapedFile.getFileSize()) { + tranlog + .info( + "remove the transaction timer task, because no prepared message in this mapedfile[{}]", + mapedFile.getFileName()); + this.cancel(); + } } finally { selectMapedBufferResult.release(); } } - - if (mapedFile.isFull()) { - // 并且无Prepared事务 - - // this.cancel(); + else if (mapedFile.isFull()) { + tranlog.info("the mapedfile[{}] maybe removed, cancel check transaction timer task", + mapedFile.getFileName()); + this.cancel(); + return; } } catch (Exception e) { - log.error("", e); + log.error("check transaction timer task Exception", e); } } - }, 1000 * 60, 1000 * 60 * 3); + }, 1000 * 60, this.defaultMessageStore.getMessageStoreConfig().getCheckTransactionMessageTimerInterval()); } From 82c438791d2532e2d10a1edec763cc573fe9d0ee Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 16:33:56 +0800 Subject: [PATCH 030/894] =?UTF-8?q?fixed=20#16=20=E5=AF=BB=E6=89=BEName=20?= =?UTF-8?q?Server=E6=96=B9=E5=BC=8F=E5=90=8CCS=E4=B8=80=E8=87=B4=EF=BC=8C?= =?UTF-8?q?=E5=8F=AF=E4=BB=A5=E6=A0=B9=E6=8D=AE=E5=AE=A2=E6=88=B7=E7=AB=AF?= =?UTF-8?q?IP=E5=9C=B0=E5=9D=80=E8=87=AA=E5=AE=9A=E5=86=B3=E5=AE=9A?= =?UTF-8?q?=E6=98=AF=E5=9C=A8=E6=97=A5=E5=B8=B8=E3=80=81=E9=A2=84=E5=8F=91?= =?UTF-8?q?=E3=80=81=E8=BF=98=E6=98=AF=E7=BA=BF=E4=B8=8A=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=20#18=20=E5=BC=80=E5=A7=8B=E5=BC=80=E5=8F=91mqadmin=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/mqadmin | 34 +++++++++++++++++++ .../com/alibaba/rocketmq/common/MixAll.java | 4 +-- .../rocketmq/tools/MQAdminStartup.java | 10 ++++++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 bin/mqadmin create mode 100644 rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java diff --git a/bin/mqadmin b/bin/mqadmin new file mode 100644 index 00000000..452a736a --- /dev/null +++ b/bin/mqadmin @@ -0,0 +1,34 @@ +#!/bin/sh + +# +# $Id: mqbroker 1840 2013-05-16 02:13:59Z shijia.wxr $ +# + +if [ -z "$ROCKETMQ_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + ROCKETMQ_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + ROCKETMQ_HOME=`cd "$ROCKETMQ_HOME" && pwd` + + cd "$saveddir" +fi + +export ROCKETMQ_HOME + +sh ${ROCKETMQ_HOME}/bin/runbroker.sh com.alibaba.rocketmq.tools.MQAdminStartup $@ diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java index 9c59de2a..4d30aeea 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java @@ -53,8 +53,8 @@ public class MixAll { public static final String ROCKETMQ_HOME_ENV = "ROCKETMQ_HOME"; public static final String WS_DOMAIN_NAME = "diamondserver.tbsite.net"; - // http://diamondserver.tbsite.net:8080/metaq/nsaddr - public static final String WS_ADDR = "http://" + WS_DOMAIN_NAME + ":8080/metaq/nsaddr"; + // http://diamondserver.tbsite.net:8080/rocketmq/nsaddr + public static final String WS_ADDR = "http://" + WS_DOMAIN_NAME + ":8080/rocketmq/nsaddr"; public static final String DEFAULT_TOPIC = "TBW102"; public static final String DEFAULT_PRODUCER_GROUP = "DEFAULT_PRODUCER"; public static final String DEFAULT_CONSUMER_GROUP = "DEFAULT_CONSUMER"; diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java new file mode 100644 index 00000000..860ccd77 --- /dev/null +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java @@ -0,0 +1,10 @@ +package com.alibaba.rocketmq.tools; + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class MQAdminStartup { + + public static void main(String[] args) { + } +} From f3329f0e19855e75373e7b980d7d152888a07caa Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 18:01:16 +0800 Subject: [PATCH 031/894] =?UTF-8?q?#18=20=E5=BC=80=E5=8F=91mqadmin?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=B7=A5=E5=85=B7=EF=BC=8C=E5=87=86=E5=A4=87?= =?UTF-8?q?=E5=A5=BD=E6=A1=86=E6=9E=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/tools/MQAdminStartup.java | 55 +++++++++++++++++++ .../alibaba/rocketmq/tools/SubCommand.java | 18 ++++++ .../tools/topic/TopicManagerSubCommand.java | 28 ++++++++++ 3 files changed, 101 insertions(+) create mode 100644 rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java create mode 100644 rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicManagerSubCommand.java diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java index 860ccd77..6f5d60ce 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java @@ -1,10 +1,65 @@ package com.alibaba.rocketmq.tools; +import java.util.ArrayList; +import java.util.List; + +import com.alibaba.rocketmq.tools.topic.TopicManagerSubCommand; + + /** * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public class MQAdminStartup { + private static List subCommandList = new ArrayList(); + + static { + subCommandList.add(new TopicManagerSubCommand()); + subCommandList.add(new TopicManagerSubCommand()); + subCommandList.add(new TopicManagerSubCommand()); + subCommandList.add(new TopicManagerSubCommand()); + subCommandList.add(new TopicManagerSubCommand()); + subCommandList.add(new TopicManagerSubCommand()); + } + + + private static void printHelp() { + System.out.println("The most commonly used mqadmin commands are:"); + + for (SubCommand cmd : subCommandList) { + System.out.printf("\t%16s %s\n", cmd.commandName(), cmd.commandDesc()); + } + + System.out.println("\nSee 'mqadmin help ' for more information on a specific command.\n"); + } + + + private static String[] parseSubArgs(String[] args) { + if (args.length > 1) { + String[] result = new String[args.length - 1]; + for (int i = 0; i < args.length - 1; i++) { + result[i] = args[i + 1]; + } + return result; + } + return null; + } + public static void main(String[] args) { + + switch (args.length) { + case 0: + printHelp(); + break; + case 1: + if (args[0].equals("help")) { + printHelp(); + } + else { + + } + default: + break; + } } } diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java new file mode 100644 index 00000000..b40870a9 --- /dev/null +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java @@ -0,0 +1,18 @@ +/** + * + */ +package com.alibaba.rocketmq.tools; + +/** + * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public interface SubCommand { + public String commandName(); + + + public String commandDesc(); + + + public void execute(String[] args); +} diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicManagerSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicManagerSubCommand.java new file mode 100644 index 00000000..6e9a7add --- /dev/null +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicManagerSubCommand.java @@ -0,0 +1,28 @@ +package com.alibaba.rocketmq.tools.topic; + +import com.alibaba.rocketmq.tools.SubCommand; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class TopicManagerSubCommand implements SubCommand { + + @Override + public String commandName() { + return "topic"; + } + + + @Override + public String commandDesc() { + return "Update, create, delete or list topics"; + } + + + @Override + public void execute(String[] args) { + // TODO Auto-generated method stub + + } +} From ca3f3332798c318a9faf184defc8b62dab231c4d Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 18:06:47 +0800 Subject: [PATCH 032/894] =?UTF-8?q?#18=20=E4=BF=AE=E6=94=B9=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E7=9A=84=E5=B8=AE=E5=8A=A9=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java index 6f5d60ce..5dfa3b63 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java @@ -26,7 +26,7 @@ private static void printHelp() { System.out.println("The most commonly used mqadmin commands are:"); for (SubCommand cmd : subCommandList) { - System.out.printf("\t%16s %s\n", cmd.commandName(), cmd.commandDesc()); + System.out.printf(" %-16s %s\n", cmd.commandName(), cmd.commandDesc()); } System.out.println("\nSee 'mqadmin help ' for more information on a specific command.\n"); From 043b4b04b5b7b98b0917d8125928425dcb496145 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 18:06:52 +0800 Subject: [PATCH 033/894] =?UTF-8?q?#18=20=E4=BF=AE=E6=94=B9=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E7=9A=84=E5=B8=AE=E5=8A=A9=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java index 5dfa3b63..bbeea4cf 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java @@ -23,13 +23,13 @@ public class MQAdminStartup { private static void printHelp() { - System.out.println("The most commonly used mqadmin commands are:"); + System.out.println("The most commonly used mqadmin commands are:\n"); for (SubCommand cmd : subCommandList) { System.out.printf(" %-16s %s\n", cmd.commandName(), cmd.commandDesc()); } - System.out.println("\nSee 'mqadmin help ' for more information on a specific command.\n"); + System.out.println("\nSee 'mqadmin help ' for more information on a specific command."); } From 7bb048d9ed6e91f6896218f035f77090a890dac1 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 18:14:56 +0800 Subject: [PATCH 034/894] =?UTF-8?q?fixed=20#26=20=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=81=A2=E5=A4=8D=E6=97=B6=EF=BC=8C=E4=BB=8E?= =?UTF-8?q?CommitLog=E6=81=A2=E5=A4=8D=E7=9A=84=E6=B6=88=E6=81=AF=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E4=BF=A1=E6=81=AF=E4=B8=8D=E9=9C=80=E8=A6=81=E6=9B=B4?= =?UTF-8?q?=E6=96=B0Transaction=20State=20Table=EF=BC=8C=E5=8F=AA=E6=9B=B4?= =?UTF-8?q?=E6=96=B0RedoLog=E5=8D=B3=E5=8F=AF=EF=BC=8C=E7=84=B6=E5=90=8E?= =?UTF-8?q?=E9=80=9A=E8=BF=87RedoLog=E5=86=8D=E6=9B=B4=E6=96=B0Transaction?= =?UTF-8?q?=20State=20Table?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/alibaba/rocketmq/store/CommitLog.java | 2 +- .../rocketmq/store/DefaultMessageStore.java | 43 ++++++++++--------- .../rocketmq/store/DispatchRequest.java | 3 ++ .../rocketmq/tools/MQAdminStartup.java | 4 +- 4 files changed, 28 insertions(+), 24 deletions(-) diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java index 5625ba0d..d8786fd9 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java @@ -709,7 +709,7 @@ public DispatchRequest checkMessageAndReturnSize(java.nio.ByteBuffer byteBuffer, sysFlag,// 9 0L,// 10 preparedTransactionOffset,// 11 - ""// 12 + null// 12 ); } catch (BufferUnderflowException e) { diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java index b089da62..71f130c7 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java @@ -552,28 +552,29 @@ private void doDispatch() { } // 2、更新Transaction State Table - switch (tranType) { - case MessageSysFlag.TransactionNotType: - break; - case MessageSysFlag.TransactionPreparedType: - // 将Prepared事务记录下来 - DefaultMessageStore.this.getTransactionStateService().appendPreparedTransaction(// - req.getCommitLogOffset(),// - req.getMsgSize(),// - (int) (req.getStoreTimestamp() / 1000),// - req.getProducerGroup().hashCode()); - break; - case MessageSysFlag.TransactionCommitType: - case MessageSysFlag.TransactionRollbackType: - DefaultMessageStore.this.getTransactionStateService().updateTransactionState(// - req.getTranStateTableOffset(),// - req.getPreparedTransactionOffset(),// - req.getProducerGroup().hashCode(),// - tranType// - ); - break; + if (req.getProducerGroup() != null) { + switch (tranType) { + case MessageSysFlag.TransactionNotType: + break; + case MessageSysFlag.TransactionPreparedType: + // 将Prepared事务记录下来 + DefaultMessageStore.this.getTransactionStateService().appendPreparedTransaction(// + req.getCommitLogOffset(),// + req.getMsgSize(),// + (int) (req.getStoreTimestamp() / 1000),// + req.getProducerGroup().hashCode()); + break; + case MessageSysFlag.TransactionCommitType: + case MessageSysFlag.TransactionRollbackType: + DefaultMessageStore.this.getTransactionStateService().updateTransactionState(// + req.getTranStateTableOffset(),// + req.getPreparedTransactionOffset(),// + req.getProducerGroup().hashCode(),// + tranType// + ); + break; + } } - // 3、记录Transaction Redo Log switch (tranType) { case MessageSysFlag.TransactionNotType: diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DispatchRequest.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DispatchRequest.java index 591a3017..b0348892 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DispatchRequest.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DispatchRequest.java @@ -43,6 +43,9 @@ public DispatchRequest(// final long tranStateTableOffset,// 10 final long preparedTransactionOffset,// 11 final String producerGroup// 12 + // 如果producerGroup为空,表示是recover过程,所以不更新 + // Transaction state + // table ) { this.topic = topic; this.queueId = queueId; diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java index bbeea4cf..16b08454 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java @@ -23,10 +23,10 @@ public class MQAdminStartup { private static void printHelp() { - System.out.println("The most commonly used mqadmin commands are:\n"); + System.out.println("The most commonly used mqadmin commands are:"); for (SubCommand cmd : subCommandList) { - System.out.printf(" %-16s %s\n", cmd.commandName(), cmd.commandDesc()); + System.out.printf(" %-12s %s\n", cmd.commandName(), cmd.commandDesc()); } System.out.println("\nSee 'mqadmin help ' for more information on a specific command."); From 9599021eb657a9dd28880395a7d58510545d15a2 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 20:26:38 +0800 Subject: [PATCH 035/894] =?UTF-8?q?#18=20=E5=A2=9E=E5=8A=A0=E4=BA=866?= =?UTF-8?q?=E4=B8=AA=E5=AD=90=E5=91=BD=E4=BB=A4=EF=BC=8C=E6=B6=B5=E7=9B=96?= =?UTF-8?q?=E5=B8=B8=E7=94=A8=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/tools/MQAdminStartup.java | 23 +++++++---- .../alibaba/rocketmq/tools/SubCommand.java | 3 ++ .../tools/broker/BrokerSubCommand.java | 39 +++++++++++++++++++ .../tools/cluster/ClusterSubCommand.java | 31 +++++++++++++++ .../connection/ConnectionSubCommand.java | 39 +++++++++++++++++++ .../tools/message/MessageSubCommand.java | 35 +++++++++++++++++ .../tools/namesrv/NamesrvSubCommand.java | 34 ++++++++++++++++ .../rocketmq/tools/stats/StatsSubCommand.java | 33 ++++++++++++++++ ...erSubCommand.java => TopicSubCommand.java} | 9 ++++- 9 files changed, 237 insertions(+), 9 deletions(-) create mode 100644 rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/broker/BrokerSubCommand.java create mode 100644 rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/cluster/ClusterSubCommand.java create mode 100644 rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/connection/ConnectionSubCommand.java create mode 100644 rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/message/MessageSubCommand.java create mode 100644 rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/namesrv/NamesrvSubCommand.java create mode 100644 rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/stats/StatsSubCommand.java rename rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/{TopicManagerSubCommand.java => TopicSubCommand.java} (75%) diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java index 16b08454..e8d67237 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java @@ -3,7 +3,13 @@ import java.util.ArrayList; import java.util.List; -import com.alibaba.rocketmq.tools.topic.TopicManagerSubCommand; +import com.alibaba.rocketmq.tools.broker.BrokerSubCommand; +import com.alibaba.rocketmq.tools.cluster.ClusterSubCommand; +import com.alibaba.rocketmq.tools.connection.ConnectionSubCommand; +import com.alibaba.rocketmq.tools.message.MessageSubCommand; +import com.alibaba.rocketmq.tools.namesrv.NamesrvSubCommand; +import com.alibaba.rocketmq.tools.stats.StatsSubCommand; +import com.alibaba.rocketmq.tools.topic.TopicSubCommand; /** @@ -13,12 +19,13 @@ public class MQAdminStartup { private static List subCommandList = new ArrayList(); static { - subCommandList.add(new TopicManagerSubCommand()); - subCommandList.add(new TopicManagerSubCommand()); - subCommandList.add(new TopicManagerSubCommand()); - subCommandList.add(new TopicManagerSubCommand()); - subCommandList.add(new TopicManagerSubCommand()); - subCommandList.add(new TopicManagerSubCommand()); + subCommandList.add(new TopicSubCommand()); + subCommandList.add(new BrokerSubCommand()); + subCommandList.add(new ClusterSubCommand()); + subCommandList.add(new NamesrvSubCommand()); + subCommandList.add(new ConnectionSubCommand()); + subCommandList.add(new MessageSubCommand()); + subCommandList.add(new StatsSubCommand()); } @@ -26,7 +33,7 @@ private static void printHelp() { System.out.println("The most commonly used mqadmin commands are:"); for (SubCommand cmd : subCommandList) { - System.out.printf(" %-12s %s\n", cmd.commandName(), cmd.commandDesc()); + System.out.printf(" %-11s %s\n", cmd.commandName(), cmd.commandDesc()); } System.out.println("\nSee 'mqadmin help ' for more information on a specific command."); diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java index b40870a9..030a34ba 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java @@ -14,5 +14,8 @@ public interface SubCommand { public String commandDesc(); + public void printHelp(); + + public void execute(String[] args); } diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/broker/BrokerSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/broker/BrokerSubCommand.java new file mode 100644 index 00000000..f5fd4d5f --- /dev/null +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/broker/BrokerSubCommand.java @@ -0,0 +1,39 @@ +/** + * + */ +package com.alibaba.rocketmq.tools.broker; + +import com.alibaba.rocketmq.tools.SubCommand; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class BrokerSubCommand implements SubCommand { + + @Override + public String commandName() { + return "broker"; + } + + + @Override + public String commandDesc() { + return "Inspect the broker's data and update"; + } + + + @Override + public void printHelp() { + // TODO Auto-generated method stub + + } + + + @Override + public void execute(String[] args) { + // TODO Auto-generated method stub + + } + +} diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/cluster/ClusterSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/cluster/ClusterSubCommand.java new file mode 100644 index 00000000..d7fd254d --- /dev/null +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/cluster/ClusterSubCommand.java @@ -0,0 +1,31 @@ +package com.alibaba.rocketmq.tools.cluster; + +import com.alibaba.rocketmq.tools.SubCommand; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class ClusterSubCommand implements SubCommand { + + @Override + public String commandName() { + return "cluster"; + } + + + @Override + public String commandDesc() { + return "List all of clusters or someone"; + } + + + @Override + public void printHelp() { + } + + + @Override + public void execute(String[] args) { + } +} diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/connection/ConnectionSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/connection/ConnectionSubCommand.java new file mode 100644 index 00000000..5d8b8fdf --- /dev/null +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/connection/ConnectionSubCommand.java @@ -0,0 +1,39 @@ +/** + * + */ +package com.alibaba.rocketmq.tools.connection; + +import com.alibaba.rocketmq.tools.SubCommand; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class ConnectionSubCommand implements SubCommand { + + @Override + public String commandName() { + return "connection"; + } + + + @Override + public String commandDesc() { + return "List connections of producer or consumer"; + } + + + @Override + public void printHelp() { + // TODO Auto-generated method stub + + } + + + @Override + public void execute(String[] args) { + // TODO Auto-generated method stub + + } + +} diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/message/MessageSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/message/MessageSubCommand.java new file mode 100644 index 00000000..9b083d23 --- /dev/null +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/message/MessageSubCommand.java @@ -0,0 +1,35 @@ +package com.alibaba.rocketmq.tools.message; + +import com.alibaba.rocketmq.tools.SubCommand; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class MessageSubCommand implements SubCommand { + + @Override + public String commandName() { + return "message"; + } + + + @Override + public String commandDesc() { + return "Query message by id or by key"; + } + + + @Override + public void printHelp() { + // TODO Auto-generated method stub + + } + + + @Override + public void execute(String[] args) { + // TODO Auto-generated method stub + + } +} diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/namesrv/NamesrvSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/namesrv/NamesrvSubCommand.java new file mode 100644 index 00000000..694884cf --- /dev/null +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/namesrv/NamesrvSubCommand.java @@ -0,0 +1,34 @@ +package com.alibaba.rocketmq.tools.namesrv; + +import com.alibaba.rocketmq.tools.SubCommand; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class NamesrvSubCommand implements SubCommand { + + @Override + public String commandName() { + return "namesrv"; + } + + + @Override + public String commandDesc() { + return "List the name servers and manage config of the name server"; + } + + + @Override + public void printHelp() { + } + + + @Override + public void execute(String[] args) { + // TODO Auto-generated method stub + + } + +} diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/stats/StatsSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/stats/StatsSubCommand.java new file mode 100644 index 00000000..3e84d8d0 --- /dev/null +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/stats/StatsSubCommand.java @@ -0,0 +1,33 @@ +package com.alibaba.rocketmq.tools.stats; + +import com.alibaba.rocketmq.tools.SubCommand; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class StatsSubCommand implements SubCommand { + + @Override + public String commandName() { + return "stats"; + } + + + @Override + public String commandDesc() { + return "Print the stats of broker, producer or consumer"; + } + + + @Override + public void printHelp() { + } + + + @Override + public void execute(String[] args) { + // TODO Auto-generated method stub + + } +} diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicManagerSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicSubCommand.java similarity index 75% rename from rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicManagerSubCommand.java rename to rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicSubCommand.java index 6e9a7add..e9895ace 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicManagerSubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicSubCommand.java @@ -6,7 +6,7 @@ /** * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ -public class TopicManagerSubCommand implements SubCommand { +public class TopicSubCommand implements SubCommand { @Override public String commandName() { @@ -20,6 +20,13 @@ public String commandDesc() { } + @Override + public void printHelp() { + // TODO Auto-generated method stub + + } + + @Override public void execute(String[] args) { // TODO Auto-generated method stub From 8ecee6b258771404703187d7218a6473406d8972 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Wed, 22 May 2013 20:35:39 +0800 Subject: [PATCH 036/894] =?UTF-8?q?#18=20=E6=9B=B4=E6=96=B0mqadmin?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E8=84=9A=E6=9C=AC=EF=BC=8C=E9=81=BF=E5=85=8D?= =?UTF-8?q?numa=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/mqadmin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/mqadmin b/bin/mqadmin index 452a736a..1eb287f4 100644 --- a/bin/mqadmin +++ b/bin/mqadmin @@ -31,4 +31,4 @@ fi export ROCKETMQ_HOME -sh ${ROCKETMQ_HOME}/bin/runbroker.sh com.alibaba.rocketmq.tools.MQAdminStartup $@ +sh ${ROCKETMQ_HOME}/bin/tools.sh com.alibaba.rocketmq.tools.MQAdminStartup $@ From 5a069a2b90b18bc7568ff89968e62a88b85c3283 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 09:58:13 +0800 Subject: [PATCH 037/894] =?UTF-8?q?#27=20=E5=A2=9E=E5=8A=A0gson=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8C=96=E6=96=B9=E5=BC=8F=EF=BC=8C=E8=B0=83=E7=A0=94?= =?UTF-8?q?gson?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 +- rocketmq-remoting/pom.xml | 4 + .../protocol/RemotingSerializable.java | 40 +++++++++ rocketmq-research/pom.xml | 4 + .../rocketmq/research/gson/Contact.java | 84 +++++++++++++++++++ .../rocketmq/research/gson/ContactBook.java | 67 +++++++++++++++ .../rocketmq/research/gson/Convert.java | 26 ++++++ .../rocketmq/research/gson/SexType.java | 6 ++ .../rocketmq/research/gson/TestConvert.java | 35 ++++++++ .../rocketmq/research/gson/TestGson.java | 40 +++++++++ 10 files changed, 311 insertions(+), 1 deletion(-) create mode 100644 rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java create mode 100644 rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java create mode 100644 rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/ContactBook.java create mode 100644 rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java create mode 100644 rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/SexType.java create mode 100644 rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java create mode 100644 rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java diff --git a/pom.xml b/pom.xml index 72238daa..71d62f3b 100644 --- a/pom.xml +++ b/pom.xml @@ -220,7 +220,11 @@ jar compile - + + com.google.code.gson + gson + 2.2.4 + \ No newline at end of file diff --git a/rocketmq-remoting/pom.xml b/rocketmq-remoting/pom.xml index 830c9d31..952aca8e 100644 --- a/rocketmq-remoting/pom.xml +++ b/rocketmq-remoting/pom.xml @@ -27,6 +27,10 @@ com.google.protobuf protobuf-java + + com.google.code.gson + gson + io.netty netty-all diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java new file mode 100644 index 00000000..10bc2566 --- /dev/null +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java @@ -0,0 +1,40 @@ +package com.alibaba.rocketmq.remoting.protocol; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + + +/** + * 复杂对象的序列化,利用gson来实现 + * + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public abstract class RemotingSerializable { + protected final static GsonBuilder builder = new GsonBuilder(); + protected final static Gson gson = builder.create(); + + + public String toJson() { + return gson.toJson(this); + } + + + public static T fromJson(String json, Class classOfT) { + return gson.fromJson(json, classOfT); + } + + + public byte[] encode() { + final String json = this.toJson(); + if (json != null) { + return json.getBytes(); + } + return null; + } + + + public static T decode(final byte[] data, Class classOfT) { + final String json = new String(data); + return gson.fromJson(json, classOfT); + } +} diff --git a/rocketmq-research/pom.xml b/rocketmq-research/pom.xml index 1fb5c845..c4055586 100644 --- a/rocketmq-research/pom.xml +++ b/rocketmq-research/pom.xml @@ -33,6 +33,10 @@ ch.qos.logback logback-classic + + + com.google.code.gson + gson diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java new file mode 100644 index 00000000..b15d6b0b --- /dev/null +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java @@ -0,0 +1,84 @@ +package com.alibaba.rocketmq.research.gson; + +import com.google.gson.annotations.Expose; + + +public class Contact { + public final static String SUB_ALL = "*"; + @Expose + private String name; + @Expose + private int age; + @Expose + private double weight; + private String school; + @Expose + private SexType sex; + + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + + public int getAge() { + return age; + } + + + public void setAge(int age) { + this.age = age; + } + + + public double getWeight() { + return weight; + } + + + public void setWeight(double weight) { + this.weight = weight; + } + + + public String getSchool() { + return school; + } + + + public void setSchool(String school) { + this.school = school; + } + + + public SexType getSex() { + return sex; + } + + + public void setSex(SexType sex) { + this.sex = sex; + } + + + public Contact(String name, int age, double weight, String school, SexType sex) { + super(); + this.name = name; + this.age = age; + this.weight = weight; + this.school = school; + this.sex = sex; + } + + + @Override + public String toString() { + return "Contact [name=" + name + ", age=" + age + ", weight=" + weight + ", school=" + school + ", sex=" + + sex + "]"; + } +} diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/ContactBook.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/ContactBook.java new file mode 100644 index 00000000..c0bf0462 --- /dev/null +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/ContactBook.java @@ -0,0 +1,67 @@ +package com.alibaba.rocketmq.research.gson; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.google.gson.annotations.Expose; + + +public class ContactBook extends Convert { + @Expose + private String name; + @Expose + private List contactList = new ArrayList(); + @Expose + private Map customField = new HashMap(); + + private int code; + + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + + public List getContactList() { + return contactList; + } + + + public void setContactList(List contactList) { + this.contactList = contactList; + } + + + public Map getCustomField() { + return customField; + } + + + public void setCustomField(Map customField) { + this.customField = customField; + } + + + public int getCode() { + return code; + } + + + public void setCode(int code) { + this.code = code; + } + + + @Override + public String toString() { + return "ContactBook [name=" + name + ", contactList=" + contactList + ", customField=" + customField + + ", code=" + code + "]"; + } +} diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java new file mode 100644 index 00000000..1c0cc2c4 --- /dev/null +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java @@ -0,0 +1,26 @@ +/** + * + */ +package com.alibaba.rocketmq.research.gson; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public abstract class Convert { + public String encode() { + GsonBuilder builder = new GsonBuilder(); + Gson gson = builder.create(); + return gson.toJson(this); + } + + + public static T decode(String json, Class classOfT) { + GsonBuilder builder = new GsonBuilder(); + Gson gson = builder.create(); + return gson.fromJson(json, classOfT); + } +} diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/SexType.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/SexType.java new file mode 100644 index 00000000..39044e86 --- /dev/null +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/SexType.java @@ -0,0 +1,6 @@ +package com.alibaba.rocketmq.research.gson; + +public enum SexType { + BOY, + GIRL +} diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java new file mode 100644 index 00000000..91825192 --- /dev/null +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java @@ -0,0 +1,35 @@ +/** + * + */ +package com.alibaba.rocketmq.research.gson; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class TestConvert { + + public static void main(String[] args) { + ContactBook contactBook = new ContactBook(); + + contactBook.setName("张三的通信录"); + contactBook.setCode(100); + + contactBook.getCustomField().put("CustomKey1", "CustomValue1"); + contactBook.getCustomField().put("CustomKey2", "CustomValue2"); + contactBook.getCustomField().put("CustomKey3", "CustomValue3"); + + contactBook.getContactList().add(new Contact("刘德华", 54, 60.56, "本科", SexType.BOY)); + contactBook.getContactList().add(new Contact("张惠妹", 41, 52.69, "研究生", SexType.GIRL)); + contactBook.getContactList().add(new Contact("周星驰", 54, 61.22, "博士", SexType.BOY)); + + String json = contactBook.encode(); + System.out.println(json); + + ContactBook d = ContactBook.decode(json, ContactBook.class); + System.out.println(d); + } +} diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java new file mode 100644 index 00000000..dff529cd --- /dev/null +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java @@ -0,0 +1,40 @@ +package com.alibaba.rocketmq.research.gson; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class TestGson { + + public static void main(String[] args) { + ContactBook contactBook = new ContactBook(); + + contactBook.setName("张三的通信录"); + contactBook.setCode(100); + + contactBook.getCustomField().put("CustomKey1", "CustomValue1"); + contactBook.getCustomField().put("CustomKey2", "CustomValue2"); + contactBook.getCustomField().put("CustomKey3", "CustomValue3"); + + contactBook.getContactList().add(new Contact("刘德华", 54, 60.56, "本科\"", SexType.BOY)); + contactBook.getContactList().add(new Contact("张惠妹", 41, 52.69, "研究生", SexType.GIRL)); + contactBook.getContactList().add(new Contact("周星驰", 54, 61.22, "博士", SexType.BOY)); + + GsonBuilder builder = new GsonBuilder(); + // builder.excludeFieldsWithoutExposeAnnotation(); + + Gson gson = builder.create(); + + String json = gson.toJson(contactBook); + System.out.println(json); + + ContactBook cb = gson.fromJson(json, ContactBook.class); + System.out.println(cb); + String json2 = gson.toJson(cb); + System.out.println(json2); + + } +} From 9530f165a129b8797f5e6aa0951640cb5d51ba97 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 10:01:58 +0800 Subject: [PATCH 038/894] =?UTF-8?q?#27=20=E5=BF=83=E8=B7=B3=E6=94=B9?= =?UTF-8?q?=E7=94=A8gson=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/ClientManageProcessor.java | 13 +--- .../protocol/heartbeat/HeartbeatData.java | 62 +------------------ .../protocol/heartbeat/HeartbeatTest.java | 2 +- 3 files changed, 5 insertions(+), 72 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ClientManageProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ClientManageProcessor.java index f763f8df..0481882a 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ClientManageProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ClientManageProcessor.java @@ -97,17 +97,8 @@ public RemotingCommand unregisterClient(ChannelHandlerContext ctx, RemotingComma public RemotingCommand heartBeat(ChannelHandlerContext ctx, RemotingCommand request) { RemotingCommand response = RemotingCommand.createResponseCommand(null); - HeartbeatData heartbeatData = null; - try { - heartbeatData = HeartbeatData.decode(request.getBody()); - } - catch (InvalidProtocolBufferException e) { - log.error("decode heartbeat body from channel[{}] error", - RemotingHelper.parseChannelRemoteAddr(ctx.channel())); - response.setCode(ResponseCode.SYSTEM_ERROR_VALUE); - response.setRemark("decode heartbeat body error"); - return response; - } + + HeartbeatData heartbeatData = HeartbeatData.decode(request.getBody(), HeartbeatData.class); ClientChannelInfo clientChannelInfo = new ClientChannelInfo(// ctx.channel(),// diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatData.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatData.java index 02725b3d..8456c52d 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatData.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatData.java @@ -6,77 +6,19 @@ import java.util.HashSet; import java.util.Set; -import com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo; -import com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo; -import com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo; -import com.google.protobuf.InvalidProtocolBufferException; +import com.alibaba.rocketmq.remoting.protocol.RemotingSerializable; /** * @author vintage.wang@gmail.com shijia.wxr@taobao.com * */ -public class HeartbeatData { +public class HeartbeatData extends RemotingSerializable { private String clientID; private Set producerDataSet = new HashSet(); private Set consumerDataSet = new HashSet(); - public byte[] encode() { - HeartbeatInfo.Builder builder = HeartbeatInfo.newBuilder(); - - // clientID - builder.setClientID(this.clientID); - - // producerDataSet - if (this.producerDataSet != null) { - int i = 0; - for (ProducerData data : this.producerDataSet) { - builder.addProducerInfos(i++, data.encode()); - } - } - - // consumerDataSet - if (this.consumerDataSet != null) { - int i = 0; - for (ConsumerData data : this.consumerDataSet) { - builder.addConsumerInfos(i++, data.encode()); - } - } - - return builder.build().toByteArray(); - } - - - public static HeartbeatData decode(byte[] data) throws InvalidProtocolBufferException { - if (data != null) { - HeartbeatData heartbeatData = new HeartbeatData(); - HeartbeatInfo pbClientHeartbeat = HeartbeatInfo.parseFrom(data); - - // clientID - heartbeatData.setClientID(pbClientHeartbeat.getClientID()); - - // producerDataSet - { - for (ProducerInfo info : pbClientHeartbeat.getProducerInfosList()) { - heartbeatData.getProducerDataSet().add(ProducerData.decode(info)); - } - } - - // ConsumerData - { - for (ConsumerInfo info : pbClientHeartbeat.getConsumerInfosList()) { - heartbeatData.getConsumerDataSet().add(ConsumerData.decode(info)); - } - } - - return heartbeatData; - } - - return null; - } - - public String getClientID() { return clientID; } diff --git a/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatTest.java b/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatTest.java index ddbb5204..e3c58968 100644 --- a/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatTest.java +++ b/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatTest.java @@ -49,7 +49,7 @@ public void test_encode_decode() throws InvalidProtocolBufferException { assertTrue(data != null); - HeartbeatData heartbeatDataDecode = HeartbeatData.decode(data); + HeartbeatData heartbeatDataDecode = HeartbeatData.decode(data, HeartbeatData.class); System.out.println(heartbeatDataDecode); } From bc3ee90bd1b667eb572569a013fc3c078d930c53 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 10:05:59 +0800 Subject: [PATCH 039/894] =?UTF-8?q?#27=20Topic=E8=B7=AF=E7=94=B1=E6=94=B9?= =?UTF-8?q?=E7=94=A8gson=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/client/impl/MQClientAPIImpl.java | 2 +- .../common/protocol/route/TopicRouteData.java | 62 ++----------------- .../DefaultTopicRuntimeDataManagerTest.java | 6 +- 3 files changed, 10 insertions(+), 60 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java index 1cad503f..7f78b69d 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java @@ -744,7 +744,7 @@ public TopicRouteData getTopicRouteInfoFromNameServer_real(final String topic, f case ResponseCode.SUCCESS_VALUE: { byte[] body = response.getBody(); if (body != null) { - return TopicRouteData.decode(body); + return TopicRouteData.decode(body, TopicRouteData.class); } } default: diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java index 0af1f411..f468d094 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java @@ -5,8 +5,7 @@ import java.util.List; -import com.alibaba.rocketmq.common.protocol.MQProtos.TopicRouteInfo; -import com.google.protobuf.InvalidProtocolBufferException; +import com.alibaba.rocketmq.remoting.protocol.RemotingSerializable; /** @@ -15,25 +14,11 @@ * @author vintage.wang@gmail.com shijia.wxr@taobao.com * */ -public class TopicRouteData { - public static final String SEP = ","; +public class TopicRouteData extends RemotingSerializable { + private String orderTopicConf; private List queueDatas; private List brokerDatas; - private String orderTopicConf; - - - public byte[] encode() { - TopicRouteInfo topicRouteInfo = ObjectConverter.topicRouteData2TopicRouteInfo(this); - return topicRouteInfo.toByteArray(); - } - - - public static TopicRouteData decode(byte[] data) throws InvalidProtocolBufferException { - TopicRouteInfo topicRouteInfo = TopicRouteInfo.parseFrom(data); - return ObjectConverter.topicRouteInfo2TopicRouteData(topicRouteInfo); - } - public List getQueueDatas() { return queueDatas; @@ -66,43 +51,8 @@ public void setOrderTopicConf(String orderTopicConf) { @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((brokerDatas == null) ? 0 : brokerDatas.hashCode()); - result = prime * result + ((orderTopicConf == null) ? 0 : orderTopicConf.hashCode()); - result = prime * result + ((queueDatas == null) ? 0 : queueDatas.hashCode()); - return result; - } - - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - TopicRouteData other = (TopicRouteData) obj; - if (brokerDatas == null) { - if (other.brokerDatas != null) - return false; - } - else if (!brokerDatas.equals(other.brokerDatas)) - return false; - if (orderTopicConf == null) { - if (other.orderTopicConf != null) - return false; - } - else if (!orderTopicConf.equals(other.orderTopicConf)) - return false; - if (queueDatas == null) { - if (other.queueDatas != null) - return false; - } - else if (!queueDatas.equals(other.queueDatas)) - return false; - return true; + public String toString() { + return "TopicRouteData [queueDatas=" + queueDatas + ", brokerDatas=" + brokerDatas + ", orderTopicConf=" + + orderTopicConf + "]"; } } diff --git a/rocketmq-namesrv/src/test/java/com/alibaba/rocketmq/namesrv/topic/DefaultTopicRuntimeDataManagerTest.java b/rocketmq-namesrv/src/test/java/com/alibaba/rocketmq/namesrv/topic/DefaultTopicRuntimeDataManagerTest.java index a7c66f78..8b272927 100644 --- a/rocketmq-namesrv/src/test/java/com/alibaba/rocketmq/namesrv/topic/DefaultTopicRuntimeDataManagerTest.java +++ b/rocketmq-namesrv/src/test/java/com/alibaba/rocketmq/namesrv/topic/DefaultTopicRuntimeDataManagerTest.java @@ -90,7 +90,7 @@ public void testGetRouteInfoByTopic() throws Exception { RemotingCommand response = dataManager.getRouteInfoByTopic(topic); Assert.assertTrue(response.getCode() == ResponseCode.SUCCESS_VALUE); - TopicRouteData topicRouteData = TopicRouteData.decode(response.getBody()); + TopicRouteData topicRouteData = TopicRouteData.decode(response.getBody(), TopicRouteData.class); Assert.assertTrue("topic.num.topic-1=105:4;106:4".equals(topicRouteData.getOrderTopicConf())); } @@ -184,7 +184,7 @@ public void testDoUnRegisterBroker() throws Exception { Assert.assertTrue(ret); } - + @Test public void testDoUnRegisterBrokerOne() throws Exception { String brokerName = "broker-1"; @@ -193,5 +193,5 @@ public void testDoUnRegisterBrokerOne() throws Exception { boolean ret = dataManager.doUnRegisterBroker(brokerName); Assert.assertTrue(ret); } - + } From 4f066deebca3bf7c992519ae5c3df0efc5148be6 Mon Sep 17 00:00:00 2001 From: "jin.qian" Date: Thu, 23 May 2013 10:18:08 +0800 Subject: [PATCH 040/894] =?UTF-8?q?=E6=94=B9=E5=8F=98=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../transaction/TransactionProducer.java | 92 ++++++++++--------- 1 file changed, 47 insertions(+), 45 deletions(-) diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java index 5e4c7c82..5a55d4ef 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java @@ -1,45 +1,47 @@ -/** - * $Id: Producer.java 1831 2013-05-16 01:39:51Z shijia.wxr $ - */ -package com.alibaba.rocketmq.example.transaction; - -import com.alibaba.rocketmq.client.exception.MQBrokerException; -import com.alibaba.rocketmq.client.exception.MQClientException; -import com.alibaba.rocketmq.client.producer.DefaultMQProducer; -import com.alibaba.rocketmq.client.producer.LocalTransactionExecuter; -import com.alibaba.rocketmq.client.producer.MQProducer; -import com.alibaba.rocketmq.client.producer.SendResult; -import com.alibaba.rocketmq.client.producer.TransactionCheckListener; -import com.alibaba.rocketmq.client.producer.TransactionMQProducer; -import com.alibaba.rocketmq.common.Message; -import com.alibaba.rocketmq.remoting.exception.RemotingException; - - -/** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com - * - */ -public class TransactionProducer { - public static void main(String[] args) { - try { - TransactionCheckListener transactionCheckListener = new TransactionCheckListenerImpl(); - TransactionMQProducer producer = new TransactionMQProducer("example.producer"); - producer.setTransactionCheckListener(transactionCheckListener); - producer.start(); - - String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; - TranExecuterImpl tranExecuter = new TranExecuterImpl(); - for (int i = 0; i < 100; i++) { - Message msg = - new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ " + i).getBytes()); - tranExecuter.setTransactionStats(1); - producer.sendMessageInTransaction(msg, tranExecuter); - } - - producer.shutdown(); - } - catch (MQClientException e) { - e.printStackTrace(); - } - } -} +/** + * $Id: Producer.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + */ +package com.alibaba.rocketmq.example.transaction; + +import com.alibaba.rocketmq.client.exception.MQBrokerException; +import com.alibaba.rocketmq.client.exception.MQClientException; +import com.alibaba.rocketmq.client.producer.DefaultMQProducer; +import com.alibaba.rocketmq.client.producer.LocalTransactionExecuter; +import com.alibaba.rocketmq.client.producer.MQProducer; +import com.alibaba.rocketmq.client.producer.SendResult; +import com.alibaba.rocketmq.client.producer.TransactionCheckListener; +import com.alibaba.rocketmq.client.producer.TransactionMQProducer; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.remoting.exception.RemotingException; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * + */ +public class TransactionProducer { + public static void main(String[] args) throws MQClientException { + + TransactionCheckListener transactionCheckListener = new TransactionCheckListenerImpl(); + TransactionMQProducer producer = new TransactionMQProducer("example.producer"); + producer.setTransactionCheckListener(transactionCheckListener); + producer.start(); + + String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; + TranExecuterImpl tranExecuter = new TranExecuterImpl(); + for (int i = 0; i < 100; i++) { + try { + Message msg = + new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ " + i).getBytes()); + tranExecuter.setTransactionStats(1); + producer.sendMessageInTransaction(msg, tranExecuter); + } + catch (MQClientException e) { + e.printStackTrace(); + } + } + + producer.shutdown(); + + } +} From 239933acadfc748a2dca19a34ee2e35f45826ab1 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 10:27:16 +0800 Subject: [PATCH 041/894] =?UTF-8?q?#27=20=E5=8E=BB=E9=99=A4ProtoBuf?= =?UTF-8?q?=E4=B8=AD=E6=97=A0=E7=94=A8=E7=9A=84Message?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/common/protocol/MQProtos.java | 3040 +---------------- .../protocol/heartbeat/ConsumerData.java | 35 - .../protocol/heartbeat/ProducerData.java | 15 - .../protocol/heartbeat/SubscriptionData.java | 26 - .../alibaba/rocketmq/common/protocol/mq.proto | 46 +- 5 files changed, 82 insertions(+), 3080 deletions(-) diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/MQProtos.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/MQProtos.java index 9c71a9c7..bbfe209c 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/MQProtos.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/MQProtos.java @@ -2974,2866 +2974,6 @@ void setOrderTopicConf(com.google.protobuf.ByteString value) { // @@protoc_insertion_point(class_scope:rocketmq.TopicRouteInfo) } - public interface ProducerInfoOrBuilder - extends com.google.protobuf.MessageOrBuilder { - - // required string groupName = 1; - boolean hasGroupName(); - String getGroupName(); - } - public static final class ProducerInfo extends - com.google.protobuf.GeneratedMessage - implements ProducerInfoOrBuilder { - // Use ProducerInfo.newBuilder() to construct. - private ProducerInfo(Builder builder) { - super(builder); - } - private ProducerInfo(boolean noInit) {} - - private static final ProducerInfo defaultInstance; - public static ProducerInfo getDefaultInstance() { - return defaultInstance; - } - - public ProducerInfo getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_ProducerInfo_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_ProducerInfo_fieldAccessorTable; - } - - private int bitField0_; - // required string groupName = 1; - public static final int GROUPNAME_FIELD_NUMBER = 1; - private java.lang.Object groupName_; - public boolean hasGroupName() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getGroupName() { - java.lang.Object ref = groupName_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - groupName_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getGroupNameBytes() { - java.lang.Object ref = groupName_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - groupName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - private void initFields() { - groupName_ = ""; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGroupName()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeBytes(1, getGroupNameBytes()); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, getGroupNameBytes()); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder - implements com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfoOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_ProducerInfo_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_ProducerInfo_fieldAccessorTable; - } - - // Construct using com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder(BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - groupName_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.getDescriptor(); - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo getDefaultInstanceForType() { - return com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.getDefaultInstance(); - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo build() { - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo buildPartial() { - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo result = new com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.groupName_ = groupName_; - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo) { - return mergeFrom((com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo other) { - if (other == com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.getDefaultInstance()) return this; - if (other.hasGroupName()) { - setGroupName(other.getGroupName()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - if (!hasGroupName()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - } - break; - } - case 10: { - bitField0_ |= 0x00000001; - groupName_ = input.readBytes(); - break; - } - } - } - } - - private int bitField0_; - - // required string groupName = 1; - private java.lang.Object groupName_ = ""; - public boolean hasGroupName() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getGroupName() { - java.lang.Object ref = groupName_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - groupName_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setGroupName(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - groupName_ = value; - onChanged(); - return this; - } - public Builder clearGroupName() { - bitField0_ = (bitField0_ & ~0x00000001); - groupName_ = getDefaultInstance().getGroupName(); - onChanged(); - return this; - } - void setGroupName(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000001; - groupName_ = value; - onChanged(); - } - - // @@protoc_insertion_point(builder_scope:rocketmq.ProducerInfo) - } - - static { - defaultInstance = new ProducerInfo(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:rocketmq.ProducerInfo) - } - - public interface SubscriptionInfoOrBuilder - extends com.google.protobuf.MessageOrBuilder { - - // required string topic = 1; - boolean hasTopic(); - String getTopic(); - - // required string subString = 2; - boolean hasSubString(); - String getSubString(); - - // required string subNumfmt = 3; - boolean hasSubNumfmt(); - String getSubNumfmt(); - - // required bool hasAndOperator = 4; - boolean hasHasAndOperator(); - boolean getHasAndOperator(); - } - public static final class SubscriptionInfo extends - com.google.protobuf.GeneratedMessage - implements SubscriptionInfoOrBuilder { - // Use SubscriptionInfo.newBuilder() to construct. - private SubscriptionInfo(Builder builder) { - super(builder); - } - private SubscriptionInfo(boolean noInit) {} - - private static final SubscriptionInfo defaultInstance; - public static SubscriptionInfo getDefaultInstance() { - return defaultInstance; - } - - public SubscriptionInfo getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_SubscriptionInfo_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_SubscriptionInfo_fieldAccessorTable; - } - - private int bitField0_; - // required string topic = 1; - public static final int TOPIC_FIELD_NUMBER = 1; - private java.lang.Object topic_; - public boolean hasTopic() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getTopic() { - java.lang.Object ref = topic_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - topic_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getTopicBytes() { - java.lang.Object ref = topic_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - topic_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // required string subString = 2; - public static final int SUBSTRING_FIELD_NUMBER = 2; - private java.lang.Object subString_; - public boolean hasSubString() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public String getSubString() { - java.lang.Object ref = subString_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - subString_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getSubStringBytes() { - java.lang.Object ref = subString_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - subString_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // required string subNumfmt = 3; - public static final int SUBNUMFMT_FIELD_NUMBER = 3; - private java.lang.Object subNumfmt_; - public boolean hasSubNumfmt() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public String getSubNumfmt() { - java.lang.Object ref = subNumfmt_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - subNumfmt_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getSubNumfmtBytes() { - java.lang.Object ref = subNumfmt_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - subNumfmt_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // required bool hasAndOperator = 4; - public static final int HASANDOPERATOR_FIELD_NUMBER = 4; - private boolean hasAndOperator_; - public boolean hasHasAndOperator() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public boolean getHasAndOperator() { - return hasAndOperator_; - } - - private void initFields() { - topic_ = ""; - subString_ = ""; - subNumfmt_ = ""; - hasAndOperator_ = false; - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasTopic()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasSubString()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasSubNumfmt()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasHasAndOperator()) { - memoizedIsInitialized = 0; - return false; - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeBytes(1, getTopicBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBytes(2, getSubStringBytes()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeBytes(3, getSubNumfmtBytes()); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - output.writeBool(4, hasAndOperator_); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, getTopicBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, getSubStringBytes()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(3, getSubNumfmtBytes()); - } - if (((bitField0_ & 0x00000008) == 0x00000008)) { - size += com.google.protobuf.CodedOutputStream - .computeBoolSize(4, hasAndOperator_); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder - implements com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfoOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_SubscriptionInfo_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_SubscriptionInfo_fieldAccessorTable; - } - - // Construct using com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder(BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - topic_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - subString_ = ""; - bitField0_ = (bitField0_ & ~0x00000002); - subNumfmt_ = ""; - bitField0_ = (bitField0_ & ~0x00000004); - hasAndOperator_ = false; - bitField0_ = (bitField0_ & ~0x00000008); - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.getDescriptor(); - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo getDefaultInstanceForType() { - return com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.getDefaultInstance(); - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo build() { - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo buildPartial() { - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo result = new com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.topic_ = topic_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.subString_ = subString_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.subNumfmt_ = subNumfmt_; - if (((from_bitField0_ & 0x00000008) == 0x00000008)) { - to_bitField0_ |= 0x00000008; - } - result.hasAndOperator_ = hasAndOperator_; - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo) { - return mergeFrom((com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo other) { - if (other == com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.getDefaultInstance()) return this; - if (other.hasTopic()) { - setTopic(other.getTopic()); - } - if (other.hasSubString()) { - setSubString(other.getSubString()); - } - if (other.hasSubNumfmt()) { - setSubNumfmt(other.getSubNumfmt()); - } - if (other.hasHasAndOperator()) { - setHasAndOperator(other.getHasAndOperator()); - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - if (!hasTopic()) { - - return false; - } - if (!hasSubString()) { - - return false; - } - if (!hasSubNumfmt()) { - - return false; - } - if (!hasHasAndOperator()) { - - return false; - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - } - break; - } - case 10: { - bitField0_ |= 0x00000001; - topic_ = input.readBytes(); - break; - } - case 18: { - bitField0_ |= 0x00000002; - subString_ = input.readBytes(); - break; - } - case 26: { - bitField0_ |= 0x00000004; - subNumfmt_ = input.readBytes(); - break; - } - case 32: { - bitField0_ |= 0x00000008; - hasAndOperator_ = input.readBool(); - break; - } - } - } - } - - private int bitField0_; - - // required string topic = 1; - private java.lang.Object topic_ = ""; - public boolean hasTopic() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getTopic() { - java.lang.Object ref = topic_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - topic_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setTopic(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - topic_ = value; - onChanged(); - return this; - } - public Builder clearTopic() { - bitField0_ = (bitField0_ & ~0x00000001); - topic_ = getDefaultInstance().getTopic(); - onChanged(); - return this; - } - void setTopic(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000001; - topic_ = value; - onChanged(); - } - - // required string subString = 2; - private java.lang.Object subString_ = ""; - public boolean hasSubString() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public String getSubString() { - java.lang.Object ref = subString_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - subString_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setSubString(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - subString_ = value; - onChanged(); - return this; - } - public Builder clearSubString() { - bitField0_ = (bitField0_ & ~0x00000002); - subString_ = getDefaultInstance().getSubString(); - onChanged(); - return this; - } - void setSubString(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000002; - subString_ = value; - onChanged(); - } - - // required string subNumfmt = 3; - private java.lang.Object subNumfmt_ = ""; - public boolean hasSubNumfmt() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public String getSubNumfmt() { - java.lang.Object ref = subNumfmt_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - subNumfmt_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setSubNumfmt(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - subNumfmt_ = value; - onChanged(); - return this; - } - public Builder clearSubNumfmt() { - bitField0_ = (bitField0_ & ~0x00000004); - subNumfmt_ = getDefaultInstance().getSubNumfmt(); - onChanged(); - return this; - } - void setSubNumfmt(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000004; - subNumfmt_ = value; - onChanged(); - } - - // required bool hasAndOperator = 4; - private boolean hasAndOperator_ ; - public boolean hasHasAndOperator() { - return ((bitField0_ & 0x00000008) == 0x00000008); - } - public boolean getHasAndOperator() { - return hasAndOperator_; - } - public Builder setHasAndOperator(boolean value) { - bitField0_ |= 0x00000008; - hasAndOperator_ = value; - onChanged(); - return this; - } - public Builder clearHasAndOperator() { - bitField0_ = (bitField0_ & ~0x00000008); - hasAndOperator_ = false; - onChanged(); - return this; - } - - // @@protoc_insertion_point(builder_scope:rocketmq.SubscriptionInfo) - } - - static { - defaultInstance = new SubscriptionInfo(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:rocketmq.SubscriptionInfo) - } - - public interface ConsumerInfoOrBuilder - extends com.google.protobuf.MessageOrBuilder { - - // required string groupName = 1; - boolean hasGroupName(); - String getGroupName(); - - // required string consumeType = 2; - boolean hasConsumeType(); - String getConsumeType(); - - // required string messageModel = 3; - boolean hasMessageModel(); - String getMessageModel(); - - // repeated .rocketmq.SubscriptionInfo subscriptionInfos = 4; - java.util.List - getSubscriptionInfosList(); - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo getSubscriptionInfos(int index); - int getSubscriptionInfosCount(); - java.util.List - getSubscriptionInfosOrBuilderList(); - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfoOrBuilder getSubscriptionInfosOrBuilder( - int index); - } - public static final class ConsumerInfo extends - com.google.protobuf.GeneratedMessage - implements ConsumerInfoOrBuilder { - // Use ConsumerInfo.newBuilder() to construct. - private ConsumerInfo(Builder builder) { - super(builder); - } - private ConsumerInfo(boolean noInit) {} - - private static final ConsumerInfo defaultInstance; - public static ConsumerInfo getDefaultInstance() { - return defaultInstance; - } - - public ConsumerInfo getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_ConsumerInfo_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_ConsumerInfo_fieldAccessorTable; - } - - private int bitField0_; - // required string groupName = 1; - public static final int GROUPNAME_FIELD_NUMBER = 1; - private java.lang.Object groupName_; - public boolean hasGroupName() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getGroupName() { - java.lang.Object ref = groupName_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - groupName_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getGroupNameBytes() { - java.lang.Object ref = groupName_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - groupName_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // required string consumeType = 2; - public static final int CONSUMETYPE_FIELD_NUMBER = 2; - private java.lang.Object consumeType_; - public boolean hasConsumeType() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public String getConsumeType() { - java.lang.Object ref = consumeType_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - consumeType_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getConsumeTypeBytes() { - java.lang.Object ref = consumeType_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - consumeType_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // required string messageModel = 3; - public static final int MESSAGEMODEL_FIELD_NUMBER = 3; - private java.lang.Object messageModel_; - public boolean hasMessageModel() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public String getMessageModel() { - java.lang.Object ref = messageModel_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - messageModel_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getMessageModelBytes() { - java.lang.Object ref = messageModel_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - messageModel_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // repeated .rocketmq.SubscriptionInfo subscriptionInfos = 4; - public static final int SUBSCRIPTIONINFOS_FIELD_NUMBER = 4; - private java.util.List subscriptionInfos_; - public java.util.List getSubscriptionInfosList() { - return subscriptionInfos_; - } - public java.util.List - getSubscriptionInfosOrBuilderList() { - return subscriptionInfos_; - } - public int getSubscriptionInfosCount() { - return subscriptionInfos_.size(); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo getSubscriptionInfos(int index) { - return subscriptionInfos_.get(index); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfoOrBuilder getSubscriptionInfosOrBuilder( - int index) { - return subscriptionInfos_.get(index); - } - - private void initFields() { - groupName_ = ""; - consumeType_ = ""; - messageModel_ = ""; - subscriptionInfos_ = java.util.Collections.emptyList(); - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasGroupName()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasConsumeType()) { - memoizedIsInitialized = 0; - return false; - } - if (!hasMessageModel()) { - memoizedIsInitialized = 0; - return false; - } - for (int i = 0; i < getSubscriptionInfosCount(); i++) { - if (!getSubscriptionInfos(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeBytes(1, getGroupNameBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - output.writeBytes(2, getConsumeTypeBytes()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - output.writeBytes(3, getMessageModelBytes()); - } - for (int i = 0; i < subscriptionInfos_.size(); i++) { - output.writeMessage(4, subscriptionInfos_.get(i)); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, getGroupNameBytes()); - } - if (((bitField0_ & 0x00000002) == 0x00000002)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(2, getConsumeTypeBytes()); - } - if (((bitField0_ & 0x00000004) == 0x00000004)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(3, getMessageModelBytes()); - } - for (int i = 0; i < subscriptionInfos_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(4, subscriptionInfos_.get(i)); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder - implements com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfoOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_ConsumerInfo_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_ConsumerInfo_fieldAccessorTable; - } - - // Construct using com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder(BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - getSubscriptionInfosFieldBuilder(); - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - groupName_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - consumeType_ = ""; - bitField0_ = (bitField0_ & ~0x00000002); - messageModel_ = ""; - bitField0_ = (bitField0_ & ~0x00000004); - if (subscriptionInfosBuilder_ == null) { - subscriptionInfos_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000008); - } else { - subscriptionInfosBuilder_.clear(); - } - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.getDescriptor(); - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo getDefaultInstanceForType() { - return com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.getDefaultInstance(); - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo build() { - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo buildPartial() { - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo result = new com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.groupName_ = groupName_; - if (((from_bitField0_ & 0x00000002) == 0x00000002)) { - to_bitField0_ |= 0x00000002; - } - result.consumeType_ = consumeType_; - if (((from_bitField0_ & 0x00000004) == 0x00000004)) { - to_bitField0_ |= 0x00000004; - } - result.messageModel_ = messageModel_; - if (subscriptionInfosBuilder_ == null) { - if (((bitField0_ & 0x00000008) == 0x00000008)) { - subscriptionInfos_ = java.util.Collections.unmodifiableList(subscriptionInfos_); - bitField0_ = (bitField0_ & ~0x00000008); - } - result.subscriptionInfos_ = subscriptionInfos_; - } else { - result.subscriptionInfos_ = subscriptionInfosBuilder_.build(); - } - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo) { - return mergeFrom((com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo other) { - if (other == com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.getDefaultInstance()) return this; - if (other.hasGroupName()) { - setGroupName(other.getGroupName()); - } - if (other.hasConsumeType()) { - setConsumeType(other.getConsumeType()); - } - if (other.hasMessageModel()) { - setMessageModel(other.getMessageModel()); - } - if (subscriptionInfosBuilder_ == null) { - if (!other.subscriptionInfos_.isEmpty()) { - if (subscriptionInfos_.isEmpty()) { - subscriptionInfos_ = other.subscriptionInfos_; - bitField0_ = (bitField0_ & ~0x00000008); - } else { - ensureSubscriptionInfosIsMutable(); - subscriptionInfos_.addAll(other.subscriptionInfos_); - } - onChanged(); - } - } else { - if (!other.subscriptionInfos_.isEmpty()) { - if (subscriptionInfosBuilder_.isEmpty()) { - subscriptionInfosBuilder_.dispose(); - subscriptionInfosBuilder_ = null; - subscriptionInfos_ = other.subscriptionInfos_; - bitField0_ = (bitField0_ & ~0x00000008); - subscriptionInfosBuilder_ = - com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? - getSubscriptionInfosFieldBuilder() : null; - } else { - subscriptionInfosBuilder_.addAllMessages(other.subscriptionInfos_); - } - } - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - if (!hasGroupName()) { - - return false; - } - if (!hasConsumeType()) { - - return false; - } - if (!hasMessageModel()) { - - return false; - } - for (int i = 0; i < getSubscriptionInfosCount(); i++) { - if (!getSubscriptionInfos(i).isInitialized()) { - - return false; - } - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - } - break; - } - case 10: { - bitField0_ |= 0x00000001; - groupName_ = input.readBytes(); - break; - } - case 18: { - bitField0_ |= 0x00000002; - consumeType_ = input.readBytes(); - break; - } - case 26: { - bitField0_ |= 0x00000004; - messageModel_ = input.readBytes(); - break; - } - case 34: { - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.Builder subBuilder = com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addSubscriptionInfos(subBuilder.buildPartial()); - break; - } - } - } - } - - private int bitField0_; - - // required string groupName = 1; - private java.lang.Object groupName_ = ""; - public boolean hasGroupName() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getGroupName() { - java.lang.Object ref = groupName_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - groupName_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setGroupName(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - groupName_ = value; - onChanged(); - return this; - } - public Builder clearGroupName() { - bitField0_ = (bitField0_ & ~0x00000001); - groupName_ = getDefaultInstance().getGroupName(); - onChanged(); - return this; - } - void setGroupName(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000001; - groupName_ = value; - onChanged(); - } - - // required string consumeType = 2; - private java.lang.Object consumeType_ = ""; - public boolean hasConsumeType() { - return ((bitField0_ & 0x00000002) == 0x00000002); - } - public String getConsumeType() { - java.lang.Object ref = consumeType_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - consumeType_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setConsumeType(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000002; - consumeType_ = value; - onChanged(); - return this; - } - public Builder clearConsumeType() { - bitField0_ = (bitField0_ & ~0x00000002); - consumeType_ = getDefaultInstance().getConsumeType(); - onChanged(); - return this; - } - void setConsumeType(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000002; - consumeType_ = value; - onChanged(); - } - - // required string messageModel = 3; - private java.lang.Object messageModel_ = ""; - public boolean hasMessageModel() { - return ((bitField0_ & 0x00000004) == 0x00000004); - } - public String getMessageModel() { - java.lang.Object ref = messageModel_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - messageModel_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setMessageModel(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000004; - messageModel_ = value; - onChanged(); - return this; - } - public Builder clearMessageModel() { - bitField0_ = (bitField0_ & ~0x00000004); - messageModel_ = getDefaultInstance().getMessageModel(); - onChanged(); - return this; - } - void setMessageModel(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000004; - messageModel_ = value; - onChanged(); - } - - // repeated .rocketmq.SubscriptionInfo subscriptionInfos = 4; - private java.util.List subscriptionInfos_ = - java.util.Collections.emptyList(); - private void ensureSubscriptionInfosIsMutable() { - if (!((bitField0_ & 0x00000008) == 0x00000008)) { - subscriptionInfos_ = new java.util.ArrayList(subscriptionInfos_); - bitField0_ |= 0x00000008; - } - } - - private com.google.protobuf.RepeatedFieldBuilder< - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo, com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.Builder, com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfoOrBuilder> subscriptionInfosBuilder_; - - public java.util.List getSubscriptionInfosList() { - if (subscriptionInfosBuilder_ == null) { - return java.util.Collections.unmodifiableList(subscriptionInfos_); - } else { - return subscriptionInfosBuilder_.getMessageList(); - } - } - public int getSubscriptionInfosCount() { - if (subscriptionInfosBuilder_ == null) { - return subscriptionInfos_.size(); - } else { - return subscriptionInfosBuilder_.getCount(); - } - } - public com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo getSubscriptionInfos(int index) { - if (subscriptionInfosBuilder_ == null) { - return subscriptionInfos_.get(index); - } else { - return subscriptionInfosBuilder_.getMessage(index); - } - } - public Builder setSubscriptionInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo value) { - if (subscriptionInfosBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureSubscriptionInfosIsMutable(); - subscriptionInfos_.set(index, value); - onChanged(); - } else { - subscriptionInfosBuilder_.setMessage(index, value); - } - return this; - } - public Builder setSubscriptionInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.Builder builderForValue) { - if (subscriptionInfosBuilder_ == null) { - ensureSubscriptionInfosIsMutable(); - subscriptionInfos_.set(index, builderForValue.build()); - onChanged(); - } else { - subscriptionInfosBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - public Builder addSubscriptionInfos(com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo value) { - if (subscriptionInfosBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureSubscriptionInfosIsMutable(); - subscriptionInfos_.add(value); - onChanged(); - } else { - subscriptionInfosBuilder_.addMessage(value); - } - return this; - } - public Builder addSubscriptionInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo value) { - if (subscriptionInfosBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureSubscriptionInfosIsMutable(); - subscriptionInfos_.add(index, value); - onChanged(); - } else { - subscriptionInfosBuilder_.addMessage(index, value); - } - return this; - } - public Builder addSubscriptionInfos( - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.Builder builderForValue) { - if (subscriptionInfosBuilder_ == null) { - ensureSubscriptionInfosIsMutable(); - subscriptionInfos_.add(builderForValue.build()); - onChanged(); - } else { - subscriptionInfosBuilder_.addMessage(builderForValue.build()); - } - return this; - } - public Builder addSubscriptionInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.Builder builderForValue) { - if (subscriptionInfosBuilder_ == null) { - ensureSubscriptionInfosIsMutable(); - subscriptionInfos_.add(index, builderForValue.build()); - onChanged(); - } else { - subscriptionInfosBuilder_.addMessage(index, builderForValue.build()); - } - return this; - } - public Builder addAllSubscriptionInfos( - java.lang.Iterable values) { - if (subscriptionInfosBuilder_ == null) { - ensureSubscriptionInfosIsMutable(); - super.addAll(values, subscriptionInfos_); - onChanged(); - } else { - subscriptionInfosBuilder_.addAllMessages(values); - } - return this; - } - public Builder clearSubscriptionInfos() { - if (subscriptionInfosBuilder_ == null) { - subscriptionInfos_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000008); - onChanged(); - } else { - subscriptionInfosBuilder_.clear(); - } - return this; - } - public Builder removeSubscriptionInfos(int index) { - if (subscriptionInfosBuilder_ == null) { - ensureSubscriptionInfosIsMutable(); - subscriptionInfos_.remove(index); - onChanged(); - } else { - subscriptionInfosBuilder_.remove(index); - } - return this; - } - public com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.Builder getSubscriptionInfosBuilder( - int index) { - return getSubscriptionInfosFieldBuilder().getBuilder(index); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfoOrBuilder getSubscriptionInfosOrBuilder( - int index) { - if (subscriptionInfosBuilder_ == null) { - return subscriptionInfos_.get(index); } else { - return subscriptionInfosBuilder_.getMessageOrBuilder(index); - } - } - public java.util.List - getSubscriptionInfosOrBuilderList() { - if (subscriptionInfosBuilder_ != null) { - return subscriptionInfosBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(subscriptionInfos_); - } - } - public com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.Builder addSubscriptionInfosBuilder() { - return getSubscriptionInfosFieldBuilder().addBuilder( - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.getDefaultInstance()); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.Builder addSubscriptionInfosBuilder( - int index) { - return getSubscriptionInfosFieldBuilder().addBuilder( - index, com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.getDefaultInstance()); - } - public java.util.List - getSubscriptionInfosBuilderList() { - return getSubscriptionInfosFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilder< - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo, com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.Builder, com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfoOrBuilder> - getSubscriptionInfosFieldBuilder() { - if (subscriptionInfosBuilder_ == null) { - subscriptionInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo, com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.Builder, com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfoOrBuilder>( - subscriptionInfos_, - ((bitField0_ & 0x00000008) == 0x00000008), - getParentForChildren(), - isClean()); - subscriptionInfos_ = null; - } - return subscriptionInfosBuilder_; - } - - // @@protoc_insertion_point(builder_scope:rocketmq.ConsumerInfo) - } - - static { - defaultInstance = new ConsumerInfo(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:rocketmq.ConsumerInfo) - } - - public interface HeartbeatInfoOrBuilder - extends com.google.protobuf.MessageOrBuilder { - - // required string clientID = 1; - boolean hasClientID(); - String getClientID(); - - // repeated .rocketmq.ProducerInfo producerInfos = 2; - java.util.List - getProducerInfosList(); - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo getProducerInfos(int index); - int getProducerInfosCount(); - java.util.List - getProducerInfosOrBuilderList(); - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfoOrBuilder getProducerInfosOrBuilder( - int index); - - // repeated .rocketmq.ConsumerInfo consumerInfos = 3; - java.util.List - getConsumerInfosList(); - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo getConsumerInfos(int index); - int getConsumerInfosCount(); - java.util.List - getConsumerInfosOrBuilderList(); - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfoOrBuilder getConsumerInfosOrBuilder( - int index); - } - public static final class HeartbeatInfo extends - com.google.protobuf.GeneratedMessage - implements HeartbeatInfoOrBuilder { - // Use HeartbeatInfo.newBuilder() to construct. - private HeartbeatInfo(Builder builder) { - super(builder); - } - private HeartbeatInfo(boolean noInit) {} - - private static final HeartbeatInfo defaultInstance; - public static HeartbeatInfo getDefaultInstance() { - return defaultInstance; - } - - public HeartbeatInfo getDefaultInstanceForType() { - return defaultInstance; - } - - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_HeartbeatInfo_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_HeartbeatInfo_fieldAccessorTable; - } - - private int bitField0_; - // required string clientID = 1; - public static final int CLIENTID_FIELD_NUMBER = 1; - private java.lang.Object clientID_; - public boolean hasClientID() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getClientID() { - java.lang.Object ref = clientID_; - if (ref instanceof String) { - return (String) ref; - } else { - com.google.protobuf.ByteString bs = - (com.google.protobuf.ByteString) ref; - String s = bs.toStringUtf8(); - if (com.google.protobuf.Internal.isValidUtf8(bs)) { - clientID_ = s; - } - return s; - } - } - private com.google.protobuf.ByteString getClientIDBytes() { - java.lang.Object ref = clientID_; - if (ref instanceof String) { - com.google.protobuf.ByteString b = - com.google.protobuf.ByteString.copyFromUtf8((String) ref); - clientID_ = b; - return b; - } else { - return (com.google.protobuf.ByteString) ref; - } - } - - // repeated .rocketmq.ProducerInfo producerInfos = 2; - public static final int PRODUCERINFOS_FIELD_NUMBER = 2; - private java.util.List producerInfos_; - public java.util.List getProducerInfosList() { - return producerInfos_; - } - public java.util.List - getProducerInfosOrBuilderList() { - return producerInfos_; - } - public int getProducerInfosCount() { - return producerInfos_.size(); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo getProducerInfos(int index) { - return producerInfos_.get(index); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfoOrBuilder getProducerInfosOrBuilder( - int index) { - return producerInfos_.get(index); - } - - // repeated .rocketmq.ConsumerInfo consumerInfos = 3; - public static final int CONSUMERINFOS_FIELD_NUMBER = 3; - private java.util.List consumerInfos_; - public java.util.List getConsumerInfosList() { - return consumerInfos_; - } - public java.util.List - getConsumerInfosOrBuilderList() { - return consumerInfos_; - } - public int getConsumerInfosCount() { - return consumerInfos_.size(); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo getConsumerInfos(int index) { - return consumerInfos_.get(index); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfoOrBuilder getConsumerInfosOrBuilder( - int index) { - return consumerInfos_.get(index); - } - - private void initFields() { - clientID_ = ""; - producerInfos_ = java.util.Collections.emptyList(); - consumerInfos_ = java.util.Collections.emptyList(); - } - private byte memoizedIsInitialized = -1; - public final boolean isInitialized() { - byte isInitialized = memoizedIsInitialized; - if (isInitialized != -1) return isInitialized == 1; - - if (!hasClientID()) { - memoizedIsInitialized = 0; - return false; - } - for (int i = 0; i < getProducerInfosCount(); i++) { - if (!getProducerInfos(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - for (int i = 0; i < getConsumerInfosCount(); i++) { - if (!getConsumerInfos(i).isInitialized()) { - memoizedIsInitialized = 0; - return false; - } - } - memoizedIsInitialized = 1; - return true; - } - - public void writeTo(com.google.protobuf.CodedOutputStream output) - throws java.io.IOException { - getSerializedSize(); - if (((bitField0_ & 0x00000001) == 0x00000001)) { - output.writeBytes(1, getClientIDBytes()); - } - for (int i = 0; i < producerInfos_.size(); i++) { - output.writeMessage(2, producerInfos_.get(i)); - } - for (int i = 0; i < consumerInfos_.size(); i++) { - output.writeMessage(3, consumerInfos_.get(i)); - } - getUnknownFields().writeTo(output); - } - - private int memoizedSerializedSize = -1; - public int getSerializedSize() { - int size = memoizedSerializedSize; - if (size != -1) return size; - - size = 0; - if (((bitField0_ & 0x00000001) == 0x00000001)) { - size += com.google.protobuf.CodedOutputStream - .computeBytesSize(1, getClientIDBytes()); - } - for (int i = 0; i < producerInfos_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(2, producerInfos_.get(i)); - } - for (int i = 0; i < consumerInfos_.size(); i++) { - size += com.google.protobuf.CodedOutputStream - .computeMessageSize(3, consumerInfos_.get(i)); - } - size += getUnknownFields().getSerializedSize(); - memoizedSerializedSize = size; - return size; - } - - private static final long serialVersionUID = 0L; - @java.lang.Override - protected java.lang.Object writeReplace() - throws java.io.ObjectStreamException { - return super.writeReplace(); - } - - public static com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo parseFrom( - com.google.protobuf.ByteString data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo parseFrom( - com.google.protobuf.ByteString data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo parseFrom(byte[] data) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo parseFrom( - byte[] data, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws com.google.protobuf.InvalidProtocolBufferException { - return newBuilder().mergeFrom(data, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo parseFrom(java.io.InputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo parseFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo parseDelimitedFrom(java.io.InputStream input) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo parseDelimitedFrom( - java.io.InputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - Builder builder = newBuilder(); - if (builder.mergeDelimitedFrom(input, extensionRegistry)) { - return builder.buildParsed(); - } else { - return null; - } - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo parseFrom( - com.google.protobuf.CodedInputStream input) - throws java.io.IOException { - return newBuilder().mergeFrom(input).buildParsed(); - } - public static com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo parseFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - return newBuilder().mergeFrom(input, extensionRegistry) - .buildParsed(); - } - - public static Builder newBuilder() { return Builder.create(); } - public Builder newBuilderForType() { return newBuilder(); } - public static Builder newBuilder(com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo prototype) { - return newBuilder().mergeFrom(prototype); - } - public Builder toBuilder() { return newBuilder(this); } - - @java.lang.Override - protected Builder newBuilderForType( - com.google.protobuf.GeneratedMessage.BuilderParent parent) { - Builder builder = new Builder(parent); - return builder; - } - public static final class Builder extends - com.google.protobuf.GeneratedMessage.Builder - implements com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfoOrBuilder { - public static final com.google.protobuf.Descriptors.Descriptor - getDescriptor() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_HeartbeatInfo_descriptor; - } - - protected com.google.protobuf.GeneratedMessage.FieldAccessorTable - internalGetFieldAccessorTable() { - return com.alibaba.rocketmq.common.protocol.MQProtos.internal_static_rocketmq_HeartbeatInfo_fieldAccessorTable; - } - - // Construct using com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo.newBuilder() - private Builder() { - maybeForceBuilderInitialization(); - } - - private Builder(BuilderParent parent) { - super(parent); - maybeForceBuilderInitialization(); - } - private void maybeForceBuilderInitialization() { - if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) { - getProducerInfosFieldBuilder(); - getConsumerInfosFieldBuilder(); - } - } - private static Builder create() { - return new Builder(); - } - - public Builder clear() { - super.clear(); - clientID_ = ""; - bitField0_ = (bitField0_ & ~0x00000001); - if (producerInfosBuilder_ == null) { - producerInfos_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); - } else { - producerInfosBuilder_.clear(); - } - if (consumerInfosBuilder_ == null) { - consumerInfos_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); - } else { - consumerInfosBuilder_.clear(); - } - return this; - } - - public Builder clone() { - return create().mergeFrom(buildPartial()); - } - - public com.google.protobuf.Descriptors.Descriptor - getDescriptorForType() { - return com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo.getDescriptor(); - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo getDefaultInstanceForType() { - return com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo.getDefaultInstance(); - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo build() { - com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException(result); - } - return result; - } - - private com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo buildParsed() - throws com.google.protobuf.InvalidProtocolBufferException { - com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo result = buildPartial(); - if (!result.isInitialized()) { - throw newUninitializedMessageException( - result).asInvalidProtocolBufferException(); - } - return result; - } - - public com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo buildPartial() { - com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo result = new com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo(this); - int from_bitField0_ = bitField0_; - int to_bitField0_ = 0; - if (((from_bitField0_ & 0x00000001) == 0x00000001)) { - to_bitField0_ |= 0x00000001; - } - result.clientID_ = clientID_; - if (producerInfosBuilder_ == null) { - if (((bitField0_ & 0x00000002) == 0x00000002)) { - producerInfos_ = java.util.Collections.unmodifiableList(producerInfos_); - bitField0_ = (bitField0_ & ~0x00000002); - } - result.producerInfos_ = producerInfos_; - } else { - result.producerInfos_ = producerInfosBuilder_.build(); - } - if (consumerInfosBuilder_ == null) { - if (((bitField0_ & 0x00000004) == 0x00000004)) { - consumerInfos_ = java.util.Collections.unmodifiableList(consumerInfos_); - bitField0_ = (bitField0_ & ~0x00000004); - } - result.consumerInfos_ = consumerInfos_; - } else { - result.consumerInfos_ = consumerInfosBuilder_.build(); - } - result.bitField0_ = to_bitField0_; - onBuilt(); - return result; - } - - public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo) { - return mergeFrom((com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo)other); - } else { - super.mergeFrom(other); - return this; - } - } - - public Builder mergeFrom(com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo other) { - if (other == com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo.getDefaultInstance()) return this; - if (other.hasClientID()) { - setClientID(other.getClientID()); - } - if (producerInfosBuilder_ == null) { - if (!other.producerInfos_.isEmpty()) { - if (producerInfos_.isEmpty()) { - producerInfos_ = other.producerInfos_; - bitField0_ = (bitField0_ & ~0x00000002); - } else { - ensureProducerInfosIsMutable(); - producerInfos_.addAll(other.producerInfos_); - } - onChanged(); - } - } else { - if (!other.producerInfos_.isEmpty()) { - if (producerInfosBuilder_.isEmpty()) { - producerInfosBuilder_.dispose(); - producerInfosBuilder_ = null; - producerInfos_ = other.producerInfos_; - bitField0_ = (bitField0_ & ~0x00000002); - producerInfosBuilder_ = - com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? - getProducerInfosFieldBuilder() : null; - } else { - producerInfosBuilder_.addAllMessages(other.producerInfos_); - } - } - } - if (consumerInfosBuilder_ == null) { - if (!other.consumerInfos_.isEmpty()) { - if (consumerInfos_.isEmpty()) { - consumerInfos_ = other.consumerInfos_; - bitField0_ = (bitField0_ & ~0x00000004); - } else { - ensureConsumerInfosIsMutable(); - consumerInfos_.addAll(other.consumerInfos_); - } - onChanged(); - } - } else { - if (!other.consumerInfos_.isEmpty()) { - if (consumerInfosBuilder_.isEmpty()) { - consumerInfosBuilder_.dispose(); - consumerInfosBuilder_ = null; - consumerInfos_ = other.consumerInfos_; - bitField0_ = (bitField0_ & ~0x00000004); - consumerInfosBuilder_ = - com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ? - getConsumerInfosFieldBuilder() : null; - } else { - consumerInfosBuilder_.addAllMessages(other.consumerInfos_); - } - } - } - this.mergeUnknownFields(other.getUnknownFields()); - return this; - } - - public final boolean isInitialized() { - if (!hasClientID()) { - - return false; - } - for (int i = 0; i < getProducerInfosCount(); i++) { - if (!getProducerInfos(i).isInitialized()) { - - return false; - } - } - for (int i = 0; i < getConsumerInfosCount(); i++) { - if (!getConsumerInfos(i).isInitialized()) { - - return false; - } - } - return true; - } - - public Builder mergeFrom( - com.google.protobuf.CodedInputStream input, - com.google.protobuf.ExtensionRegistryLite extensionRegistry) - throws java.io.IOException { - com.google.protobuf.UnknownFieldSet.Builder unknownFields = - com.google.protobuf.UnknownFieldSet.newBuilder( - this.getUnknownFields()); - while (true) { - int tag = input.readTag(); - switch (tag) { - case 0: - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - default: { - if (!parseUnknownField(input, unknownFields, - extensionRegistry, tag)) { - this.setUnknownFields(unknownFields.build()); - onChanged(); - return this; - } - break; - } - case 10: { - bitField0_ |= 0x00000001; - clientID_ = input.readBytes(); - break; - } - case 18: { - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.Builder subBuilder = com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addProducerInfos(subBuilder.buildPartial()); - break; - } - case 26: { - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.Builder subBuilder = com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.newBuilder(); - input.readMessage(subBuilder, extensionRegistry); - addConsumerInfos(subBuilder.buildPartial()); - break; - } - } - } - } - - private int bitField0_; - - // required string clientID = 1; - private java.lang.Object clientID_ = ""; - public boolean hasClientID() { - return ((bitField0_ & 0x00000001) == 0x00000001); - } - public String getClientID() { - java.lang.Object ref = clientID_; - if (!(ref instanceof String)) { - String s = ((com.google.protobuf.ByteString) ref).toStringUtf8(); - clientID_ = s; - return s; - } else { - return (String) ref; - } - } - public Builder setClientID(String value) { - if (value == null) { - throw new NullPointerException(); - } - bitField0_ |= 0x00000001; - clientID_ = value; - onChanged(); - return this; - } - public Builder clearClientID() { - bitField0_ = (bitField0_ & ~0x00000001); - clientID_ = getDefaultInstance().getClientID(); - onChanged(); - return this; - } - void setClientID(com.google.protobuf.ByteString value) { - bitField0_ |= 0x00000001; - clientID_ = value; - onChanged(); - } - - // repeated .rocketmq.ProducerInfo producerInfos = 2; - private java.util.List producerInfos_ = - java.util.Collections.emptyList(); - private void ensureProducerInfosIsMutable() { - if (!((bitField0_ & 0x00000002) == 0x00000002)) { - producerInfos_ = new java.util.ArrayList(producerInfos_); - bitField0_ |= 0x00000002; - } - } - - private com.google.protobuf.RepeatedFieldBuilder< - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo, com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.Builder, com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfoOrBuilder> producerInfosBuilder_; - - public java.util.List getProducerInfosList() { - if (producerInfosBuilder_ == null) { - return java.util.Collections.unmodifiableList(producerInfos_); - } else { - return producerInfosBuilder_.getMessageList(); - } - } - public int getProducerInfosCount() { - if (producerInfosBuilder_ == null) { - return producerInfos_.size(); - } else { - return producerInfosBuilder_.getCount(); - } - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo getProducerInfos(int index) { - if (producerInfosBuilder_ == null) { - return producerInfos_.get(index); - } else { - return producerInfosBuilder_.getMessage(index); - } - } - public Builder setProducerInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo value) { - if (producerInfosBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureProducerInfosIsMutable(); - producerInfos_.set(index, value); - onChanged(); - } else { - producerInfosBuilder_.setMessage(index, value); - } - return this; - } - public Builder setProducerInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.Builder builderForValue) { - if (producerInfosBuilder_ == null) { - ensureProducerInfosIsMutable(); - producerInfos_.set(index, builderForValue.build()); - onChanged(); - } else { - producerInfosBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - public Builder addProducerInfos(com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo value) { - if (producerInfosBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureProducerInfosIsMutable(); - producerInfos_.add(value); - onChanged(); - } else { - producerInfosBuilder_.addMessage(value); - } - return this; - } - public Builder addProducerInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo value) { - if (producerInfosBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureProducerInfosIsMutable(); - producerInfos_.add(index, value); - onChanged(); - } else { - producerInfosBuilder_.addMessage(index, value); - } - return this; - } - public Builder addProducerInfos( - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.Builder builderForValue) { - if (producerInfosBuilder_ == null) { - ensureProducerInfosIsMutable(); - producerInfos_.add(builderForValue.build()); - onChanged(); - } else { - producerInfosBuilder_.addMessage(builderForValue.build()); - } - return this; - } - public Builder addProducerInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.Builder builderForValue) { - if (producerInfosBuilder_ == null) { - ensureProducerInfosIsMutable(); - producerInfos_.add(index, builderForValue.build()); - onChanged(); - } else { - producerInfosBuilder_.addMessage(index, builderForValue.build()); - } - return this; - } - public Builder addAllProducerInfos( - java.lang.Iterable values) { - if (producerInfosBuilder_ == null) { - ensureProducerInfosIsMutable(); - super.addAll(values, producerInfos_); - onChanged(); - } else { - producerInfosBuilder_.addAllMessages(values); - } - return this; - } - public Builder clearProducerInfos() { - if (producerInfosBuilder_ == null) { - producerInfos_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000002); - onChanged(); - } else { - producerInfosBuilder_.clear(); - } - return this; - } - public Builder removeProducerInfos(int index) { - if (producerInfosBuilder_ == null) { - ensureProducerInfosIsMutable(); - producerInfos_.remove(index); - onChanged(); - } else { - producerInfosBuilder_.remove(index); - } - return this; - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.Builder getProducerInfosBuilder( - int index) { - return getProducerInfosFieldBuilder().getBuilder(index); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfoOrBuilder getProducerInfosOrBuilder( - int index) { - if (producerInfosBuilder_ == null) { - return producerInfos_.get(index); } else { - return producerInfosBuilder_.getMessageOrBuilder(index); - } - } - public java.util.List - getProducerInfosOrBuilderList() { - if (producerInfosBuilder_ != null) { - return producerInfosBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(producerInfos_); - } - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.Builder addProducerInfosBuilder() { - return getProducerInfosFieldBuilder().addBuilder( - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.getDefaultInstance()); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.Builder addProducerInfosBuilder( - int index) { - return getProducerInfosFieldBuilder().addBuilder( - index, com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.getDefaultInstance()); - } - public java.util.List - getProducerInfosBuilderList() { - return getProducerInfosFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilder< - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo, com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.Builder, com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfoOrBuilder> - getProducerInfosFieldBuilder() { - if (producerInfosBuilder_ == null) { - producerInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo, com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.Builder, com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfoOrBuilder>( - producerInfos_, - ((bitField0_ & 0x00000002) == 0x00000002), - getParentForChildren(), - isClean()); - producerInfos_ = null; - } - return producerInfosBuilder_; - } - - // repeated .rocketmq.ConsumerInfo consumerInfos = 3; - private java.util.List consumerInfos_ = - java.util.Collections.emptyList(); - private void ensureConsumerInfosIsMutable() { - if (!((bitField0_ & 0x00000004) == 0x00000004)) { - consumerInfos_ = new java.util.ArrayList(consumerInfos_); - bitField0_ |= 0x00000004; - } - } - - private com.google.protobuf.RepeatedFieldBuilder< - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo, com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.Builder, com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfoOrBuilder> consumerInfosBuilder_; - - public java.util.List getConsumerInfosList() { - if (consumerInfosBuilder_ == null) { - return java.util.Collections.unmodifiableList(consumerInfos_); - } else { - return consumerInfosBuilder_.getMessageList(); - } - } - public int getConsumerInfosCount() { - if (consumerInfosBuilder_ == null) { - return consumerInfos_.size(); - } else { - return consumerInfosBuilder_.getCount(); - } - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo getConsumerInfos(int index) { - if (consumerInfosBuilder_ == null) { - return consumerInfos_.get(index); - } else { - return consumerInfosBuilder_.getMessage(index); - } - } - public Builder setConsumerInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo value) { - if (consumerInfosBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureConsumerInfosIsMutable(); - consumerInfos_.set(index, value); - onChanged(); - } else { - consumerInfosBuilder_.setMessage(index, value); - } - return this; - } - public Builder setConsumerInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.Builder builderForValue) { - if (consumerInfosBuilder_ == null) { - ensureConsumerInfosIsMutable(); - consumerInfos_.set(index, builderForValue.build()); - onChanged(); - } else { - consumerInfosBuilder_.setMessage(index, builderForValue.build()); - } - return this; - } - public Builder addConsumerInfos(com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo value) { - if (consumerInfosBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureConsumerInfosIsMutable(); - consumerInfos_.add(value); - onChanged(); - } else { - consumerInfosBuilder_.addMessage(value); - } - return this; - } - public Builder addConsumerInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo value) { - if (consumerInfosBuilder_ == null) { - if (value == null) { - throw new NullPointerException(); - } - ensureConsumerInfosIsMutable(); - consumerInfos_.add(index, value); - onChanged(); - } else { - consumerInfosBuilder_.addMessage(index, value); - } - return this; - } - public Builder addConsumerInfos( - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.Builder builderForValue) { - if (consumerInfosBuilder_ == null) { - ensureConsumerInfosIsMutable(); - consumerInfos_.add(builderForValue.build()); - onChanged(); - } else { - consumerInfosBuilder_.addMessage(builderForValue.build()); - } - return this; - } - public Builder addConsumerInfos( - int index, com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.Builder builderForValue) { - if (consumerInfosBuilder_ == null) { - ensureConsumerInfosIsMutable(); - consumerInfos_.add(index, builderForValue.build()); - onChanged(); - } else { - consumerInfosBuilder_.addMessage(index, builderForValue.build()); - } - return this; - } - public Builder addAllConsumerInfos( - java.lang.Iterable values) { - if (consumerInfosBuilder_ == null) { - ensureConsumerInfosIsMutable(); - super.addAll(values, consumerInfos_); - onChanged(); - } else { - consumerInfosBuilder_.addAllMessages(values); - } - return this; - } - public Builder clearConsumerInfos() { - if (consumerInfosBuilder_ == null) { - consumerInfos_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000004); - onChanged(); - } else { - consumerInfosBuilder_.clear(); - } - return this; - } - public Builder removeConsumerInfos(int index) { - if (consumerInfosBuilder_ == null) { - ensureConsumerInfosIsMutable(); - consumerInfos_.remove(index); - onChanged(); - } else { - consumerInfosBuilder_.remove(index); - } - return this; - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.Builder getConsumerInfosBuilder( - int index) { - return getConsumerInfosFieldBuilder().getBuilder(index); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfoOrBuilder getConsumerInfosOrBuilder( - int index) { - if (consumerInfosBuilder_ == null) { - return consumerInfos_.get(index); } else { - return consumerInfosBuilder_.getMessageOrBuilder(index); - } - } - public java.util.List - getConsumerInfosOrBuilderList() { - if (consumerInfosBuilder_ != null) { - return consumerInfosBuilder_.getMessageOrBuilderList(); - } else { - return java.util.Collections.unmodifiableList(consumerInfos_); - } - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.Builder addConsumerInfosBuilder() { - return getConsumerInfosFieldBuilder().addBuilder( - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.getDefaultInstance()); - } - public com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.Builder addConsumerInfosBuilder( - int index) { - return getConsumerInfosFieldBuilder().addBuilder( - index, com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.getDefaultInstance()); - } - public java.util.List - getConsumerInfosBuilderList() { - return getConsumerInfosFieldBuilder().getBuilderList(); - } - private com.google.protobuf.RepeatedFieldBuilder< - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo, com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.Builder, com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfoOrBuilder> - getConsumerInfosFieldBuilder() { - if (consumerInfosBuilder_ == null) { - consumerInfosBuilder_ = new com.google.protobuf.RepeatedFieldBuilder< - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo, com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.Builder, com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfoOrBuilder>( - consumerInfos_, - ((bitField0_ & 0x00000004) == 0x00000004), - getParentForChildren(), - isClean()); - consumerInfos_ = null; - } - return consumerInfosBuilder_; - } - - // @@protoc_insertion_point(builder_scope:rocketmq.HeartbeatInfo) - } - - static { - defaultInstance = new HeartbeatInfo(true); - defaultInstance.initFields(); - } - - // @@protoc_insertion_point(class_scope:rocketmq.HeartbeatInfo) - } - public interface TopicQueuePairOrBuilder extends com.google.protobuf.MessageOrBuilder { @@ -8225,26 +5365,6 @@ public com.alibaba.rocketmq.remoting.protocol.RemotingProtos.StringListOrBuilder private static com.google.protobuf.GeneratedMessage.FieldAccessorTable internal_static_rocketmq_TopicRouteInfo_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_rocketmq_ProducerInfo_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_rocketmq_ProducerInfo_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_rocketmq_SubscriptionInfo_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_rocketmq_SubscriptionInfo_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_rocketmq_ConsumerInfo_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_rocketmq_ConsumerInfo_fieldAccessorTable; - private static com.google.protobuf.Descriptors.Descriptor - internal_static_rocketmq_HeartbeatInfo_descriptor; - private static - com.google.protobuf.GeneratedMessage.FieldAccessorTable - internal_static_rocketmq_HeartbeatInfo_fieldAccessorTable; private static com.google.protobuf.Descriptors.Descriptor internal_static_rocketmq_TopicQueuePair_descriptor; private static @@ -8278,72 +5398,62 @@ public com.alibaba.rocketmq.remoting.protocol.RemotingProtos.StringListOrBuilder " \002(\005\022\014\n\004perm\030\004 \002(\005\"|\n\016TopicRouteInfo\022\'\n\n" + "queueInfos\030\001 \003(\0132\023.rocketmq.QueueInfo\022)\n" + "\013brokerInfos\030\002 \003(\0132\024.rocketmq.BrokerInfo" + - "\022\026\n\016orderTopicConf\030\003 \001(\t\"!\n\014ProducerInfo", - "\022\021\n\tgroupName\030\001 \002(\t\"_\n\020SubscriptionInfo\022" + - "\r\n\005topic\030\001 \002(\t\022\021\n\tsubString\030\002 \002(\t\022\021\n\tsub" + - "Numfmt\030\003 \002(\t\022\026\n\016hasAndOperator\030\004 \002(\010\"\203\001\n" + - "\014ConsumerInfo\022\021\n\tgroupName\030\001 \002(\t\022\023\n\013cons" + - "umeType\030\002 \002(\t\022\024\n\014messageModel\030\003 \002(\t\0225\n\021s" + - "ubscriptionInfos\030\004 \003(\0132\032.rocketmq.Subscr" + - "iptionInfo\"\177\n\rHeartbeatInfo\022\020\n\010clientID\030" + - "\001 \002(\t\022-\n\rproducerInfos\030\002 \003(\0132\026.rocketmq." + - "ProducerInfo\022-\n\rconsumerInfos\030\003 \003(\0132\026.ro" + - "cketmq.ConsumerInfo\"G\n\016TopicQueuePair\022\r\n", - "\005topic\030\001 \002(\t\022&\n\tqueueInfo\030\002 \003(\0132\023.rocket" + - "mq.QueueInfo\"N\n\016BrokerDataPair\022\022\n\nbroker" + - "Name\030\001 \002(\t\022(\n\nbrokerInfo\030\002 \002(\0132\024.rocketm" + - "q.BrokerInfo\"\306\001\n\020TopicRuntimeInfo\022.\n\014top" + - "icBrokers\030\001 \003(\0132\030.rocketmq.TopicQueuePai" + - "r\022-\n\017topicOrderConfs\030\002 \002(\0132\024.remoting.NV" + - "PairList\022)\n\007brokers\030\003 \003(\0132\030.rocketmq.Bro" + - "kerDataPair\022(\n\nbrokerList\030\004 \002(\0132\024.remoti" + - "ng.StringList*\251\010\n\rMQRequestCode\022\020\n\014SEND_" + - "MESSAGE\020\n\022\020\n\014PULL_MESSAGE\020\013\022\021\n\rQUERY_MES", - "SAGE\020\014\022\027\n\023QUERY_BROKER_OFFSET\020\r\022\031\n\025QUERY" + - "_CONSUMER_OFFSET\020\016\022\032\n\026UPDATE_CONSUMER_OF" + - "FSET\020\017\022\033\n\027UPDATE_AND_CREATE_TOPIC\020\021\022\020\n\014D" + - "ELETE_TOPIC\020\023\022\030\n\024GET_ALL_TOPIC_CONFIG\020\025\022" + - "\031\n\025GET_TOPIC_CONFIG_LIST\020\026\022\027\n\023GET_TOPIC_" + - "NAME_LIST\020\027\022\034\n\030PULL_ALL_CONSUMER_OFFSET\020" + - "\030\022\030\n\024UPDATE_BROKER_CONFIG\020\031\022\025\n\021GET_BROKE" + - "R_CONFIG\020\032\022\030\n\024TRIGGER_DELETE_FILES\020\033\022\033\n\027" + - "GET_BROKER_RUNTIME_INFO\020\034\022\036\n\032SEARCH_OFFS" + - "ET_BY_TIMESTAMP\020\035\022\022\n\016GET_MAX_OFFSET\020\036\022\022\n", - "\016GET_MIN_OFFSET\020\037\022\036\n\032GET_EARLIEST_MSG_ST" + - "ORETIME\020 \022\026\n\022VIEW_MESSAGE_BY_ID\020!\022\016\n\nHEA" + - "RT_BEAT\020\"\022\025\n\021UNREGISTER_CLIENT\020#\022\032\n\026CONS" + - "UMER_SEND_MSG_BACK\020$\022\023\n\017END_TRANSACTION\020" + - "%\022\033\n\027CHECK_TRANSACTION_STATE\020&\022\023\n\017REGIST" + - "ER_BROKER\020d\022\025\n\021UNREGISTER_BROKER\020e\022\023\n\017GE" + - "T_BROKER_LIST\020f\022\030\n\024REGISTER_ORDER_TOPIC\020" + - "g\022\032\n\026UNREGISTER_ORDER_TOPIC\020h\022\030\n\024GET_ORD" + - "ER_TOPIC_LIST\020i\022\031\n\025UPDATE_NAMESRV_CONFIG" + - "\020j\022\026\n\022GET_NAMESRV_CONFIG\020k\022\034\n\030GET_NAMESR", - "V_RUNTIME_INFO\020l\022\032\n\026GET_ROUTEINTO_BY_TOP" + - "IC\020m\022\035\n\031SYNC_NAMESRV_RUNTIME_CONF\020n\022\032\n\026R" + - "EGISTER_BROKER_SINGLE\020o\022\034\n\030UNREGISTER_BR" + - "OKER_SINGLE\020p\022\037\n\033REGISTER_ORDER_TOPIC_SI" + - "NGLE\020q\022!\n\035UNREGISTER_ORDER_TOPIC_SINGLE\020" + - "r*\313\005\n\016MQResponseCode\022\026\n\022FLUSH_DISK_TIMEO" + - "UT\020\n\022\027\n\023SLAVE_NOT_AVAILABLE\020\013\022\027\n\023FLUSH_S" + - "LAVE_TIMEOUT\020\014\022\023\n\017MESSAGE_ILLEGAL\020\r\022\031\n\025S" + - "ERVICE_NOT_AVAILABLE\020\016\022\031\n\025VERSION_NOT_SU" + - "PPORTED\020\017\022\021\n\rNO_PERMISSION\020\020\022\023\n\017TOPIC_NO", - "T_EXIST\020\021\022\027\n\023TOPIC_EXIST_ALREADY\020\022\022\022\n\016PU" + - "LL_NOT_FOUND\020\023\022\032\n\026PULL_RETRY_IMMEDIATELY" + - "\020\024\022\025\n\021PULL_OFFSET_MOVED\020\025\022\023\n\017QUERY_NOT_F" + - "OUND\020\026\022\027\n\023DELETE_INVALID_CONF\020d\022\022\n\016NOT_M" + - "ERGE_CONF\020e\022\030\n\024REGISTER_BROKER_FAIL\020f\022\033\n" + - "\027REGISTER_BROKER_TIMEOUT\020g\022\035\n\031REGISTER_O" + - "RDER_TOPIC_FAIL\020h\022 \n\034REGISTER_ORDER_TOPI" + - "C_TIMEOUT\020i\022\032\n\026UNREGISTER_BROKER_FAIL\020j\022" + - "\035\n\031UNREGISTER_BROKER_TIMEOUT\020k\022\"\n\036UNREGI" + - "STER_ORDER_TOPIC_TIMEOUT\020l\022\036\n\031TRANSACTIO", - "N_SHOULD_COMMIT\020\310\001\022 \n\033TRANSACTION_SHOULD" + - "_ROLLBACK\020\311\001\022\035\n\030TRANSACTION_STATE_UNKNOW" + - "\020\312\001\022\"\n\035TRANSACTION_STATE_GROUP_WRONG\020\313\001B" + - "2\n$com.alibaba.rocketmq.common.protocolB" + - "\010MQProtosH\001" + "\022\026\n\016orderTopicConf\030\003 \001(\t\"G\n\016TopicQueuePa", + "ir\022\r\n\005topic\030\001 \002(\t\022&\n\tqueueInfo\030\002 \003(\0132\023.r" + + "ocketmq.QueueInfo\"N\n\016BrokerDataPair\022\022\n\nb" + + "rokerName\030\001 \002(\t\022(\n\nbrokerInfo\030\002 \002(\0132\024.ro" + + "cketmq.BrokerInfo\"\306\001\n\020TopicRuntimeInfo\022." + + "\n\014topicBrokers\030\001 \003(\0132\030.rocketmq.TopicQue" + + "uePair\022-\n\017topicOrderConfs\030\002 \002(\0132\024.remoti" + + "ng.NVPairList\022)\n\007brokers\030\003 \003(\0132\030.rocketm" + + "q.BrokerDataPair\022(\n\nbrokerList\030\004 \002(\0132\024.r" + + "emoting.StringList*\251\010\n\rMQRequestCode\022\020\n\014" + + "SEND_MESSAGE\020\n\022\020\n\014PULL_MESSAGE\020\013\022\021\n\rQUER", + "Y_MESSAGE\020\014\022\027\n\023QUERY_BROKER_OFFSET\020\r\022\031\n\025" + + "QUERY_CONSUMER_OFFSET\020\016\022\032\n\026UPDATE_CONSUM" + + "ER_OFFSET\020\017\022\033\n\027UPDATE_AND_CREATE_TOPIC\020\021" + + "\022\020\n\014DELETE_TOPIC\020\023\022\030\n\024GET_ALL_TOPIC_CONF" + + "IG\020\025\022\031\n\025GET_TOPIC_CONFIG_LIST\020\026\022\027\n\023GET_T" + + "OPIC_NAME_LIST\020\027\022\034\n\030PULL_ALL_CONSUMER_OF" + + "FSET\020\030\022\030\n\024UPDATE_BROKER_CONFIG\020\031\022\025\n\021GET_" + + "BROKER_CONFIG\020\032\022\030\n\024TRIGGER_DELETE_FILES\020" + + "\033\022\033\n\027GET_BROKER_RUNTIME_INFO\020\034\022\036\n\032SEARCH" + + "_OFFSET_BY_TIMESTAMP\020\035\022\022\n\016GET_MAX_OFFSET", + "\020\036\022\022\n\016GET_MIN_OFFSET\020\037\022\036\n\032GET_EARLIEST_M" + + "SG_STORETIME\020 \022\026\n\022VIEW_MESSAGE_BY_ID\020!\022\016" + + "\n\nHEART_BEAT\020\"\022\025\n\021UNREGISTER_CLIENT\020#\022\032\n" + + "\026CONSUMER_SEND_MSG_BACK\020$\022\023\n\017END_TRANSAC" + + "TION\020%\022\033\n\027CHECK_TRANSACTION_STATE\020&\022\023\n\017R" + + "EGISTER_BROKER\020d\022\025\n\021UNREGISTER_BROKER\020e\022" + + "\023\n\017GET_BROKER_LIST\020f\022\030\n\024REGISTER_ORDER_T" + + "OPIC\020g\022\032\n\026UNREGISTER_ORDER_TOPIC\020h\022\030\n\024GE" + + "T_ORDER_TOPIC_LIST\020i\022\031\n\025UPDATE_NAMESRV_C" + + "ONFIG\020j\022\026\n\022GET_NAMESRV_CONFIG\020k\022\034\n\030GET_N", + "AMESRV_RUNTIME_INFO\020l\022\032\n\026GET_ROUTEINTO_B" + + "Y_TOPIC\020m\022\035\n\031SYNC_NAMESRV_RUNTIME_CONF\020n" + + "\022\032\n\026REGISTER_BROKER_SINGLE\020o\022\034\n\030UNREGIST" + + "ER_BROKER_SINGLE\020p\022\037\n\033REGISTER_ORDER_TOP" + + "IC_SINGLE\020q\022!\n\035UNREGISTER_ORDER_TOPIC_SI" + + "NGLE\020r*\313\005\n\016MQResponseCode\022\026\n\022FLUSH_DISK_" + + "TIMEOUT\020\n\022\027\n\023SLAVE_NOT_AVAILABLE\020\013\022\027\n\023FL" + + "USH_SLAVE_TIMEOUT\020\014\022\023\n\017MESSAGE_ILLEGAL\020\r" + + "\022\031\n\025SERVICE_NOT_AVAILABLE\020\016\022\031\n\025VERSION_N" + + "OT_SUPPORTED\020\017\022\021\n\rNO_PERMISSION\020\020\022\023\n\017TOP", + "IC_NOT_EXIST\020\021\022\027\n\023TOPIC_EXIST_ALREADY\020\022\022" + + "\022\n\016PULL_NOT_FOUND\020\023\022\032\n\026PULL_RETRY_IMMEDI" + + "ATELY\020\024\022\025\n\021PULL_OFFSET_MOVED\020\025\022\023\n\017QUERY_" + + "NOT_FOUND\020\026\022\027\n\023DELETE_INVALID_CONF\020d\022\022\n\016" + + "NOT_MERGE_CONF\020e\022\030\n\024REGISTER_BROKER_FAIL" + + "\020f\022\033\n\027REGISTER_BROKER_TIMEOUT\020g\022\035\n\031REGIS" + + "TER_ORDER_TOPIC_FAIL\020h\022 \n\034REGISTER_ORDER" + + "_TOPIC_TIMEOUT\020i\022\032\n\026UNREGISTER_BROKER_FA" + + "IL\020j\022\035\n\031UNREGISTER_BROKER_TIMEOUT\020k\022\"\n\036U" + + "NREGISTER_ORDER_TOPIC_TIMEOUT\020l\022\036\n\031TRANS", + "ACTION_SHOULD_COMMIT\020\310\001\022 \n\033TRANSACTION_S" + + "HOULD_ROLLBACK\020\311\001\022\035\n\030TRANSACTION_STATE_U" + + "NKNOW\020\312\001\022\"\n\035TRANSACTION_STATE_GROUP_WRON" + + "G\020\313\001B2\n$com.alibaba.rocketmq.common.prot" + + "ocolB\010MQProtosH\001" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -8382,40 +5492,8 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new java.lang.String[] { "QueueInfos", "BrokerInfos", "OrderTopicConf", }, com.alibaba.rocketmq.common.protocol.MQProtos.TopicRouteInfo.class, com.alibaba.rocketmq.common.protocol.MQProtos.TopicRouteInfo.Builder.class); - internal_static_rocketmq_ProducerInfo_descriptor = - getDescriptor().getMessageTypes().get(3); - internal_static_rocketmq_ProducerInfo_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_rocketmq_ProducerInfo_descriptor, - new java.lang.String[] { "GroupName", }, - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.class, - com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo.Builder.class); - internal_static_rocketmq_SubscriptionInfo_descriptor = - getDescriptor().getMessageTypes().get(4); - internal_static_rocketmq_SubscriptionInfo_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_rocketmq_SubscriptionInfo_descriptor, - new java.lang.String[] { "Topic", "SubString", "SubNumfmt", "HasAndOperator", }, - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.class, - com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo.Builder.class); - internal_static_rocketmq_ConsumerInfo_descriptor = - getDescriptor().getMessageTypes().get(5); - internal_static_rocketmq_ConsumerInfo_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_rocketmq_ConsumerInfo_descriptor, - new java.lang.String[] { "GroupName", "ConsumeType", "MessageModel", "SubscriptionInfos", }, - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.class, - com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo.Builder.class); - internal_static_rocketmq_HeartbeatInfo_descriptor = - getDescriptor().getMessageTypes().get(6); - internal_static_rocketmq_HeartbeatInfo_fieldAccessorTable = new - com.google.protobuf.GeneratedMessage.FieldAccessorTable( - internal_static_rocketmq_HeartbeatInfo_descriptor, - new java.lang.String[] { "ClientID", "ProducerInfos", "ConsumerInfos", }, - com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo.class, - com.alibaba.rocketmq.common.protocol.MQProtos.HeartbeatInfo.Builder.class); internal_static_rocketmq_TopicQueuePair_descriptor = - getDescriptor().getMessageTypes().get(7); + getDescriptor().getMessageTypes().get(3); internal_static_rocketmq_TopicQueuePair_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_rocketmq_TopicQueuePair_descriptor, @@ -8423,7 +5501,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.alibaba.rocketmq.common.protocol.MQProtos.TopicQueuePair.class, com.alibaba.rocketmq.common.protocol.MQProtos.TopicQueuePair.Builder.class); internal_static_rocketmq_BrokerDataPair_descriptor = - getDescriptor().getMessageTypes().get(8); + getDescriptor().getMessageTypes().get(4); internal_static_rocketmq_BrokerDataPair_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_rocketmq_BrokerDataPair_descriptor, @@ -8431,7 +5509,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.alibaba.rocketmq.common.protocol.MQProtos.BrokerDataPair.class, com.alibaba.rocketmq.common.protocol.MQProtos.BrokerDataPair.Builder.class); internal_static_rocketmq_TopicRuntimeInfo_descriptor = - getDescriptor().getMessageTypes().get(9); + getDescriptor().getMessageTypes().get(5); internal_static_rocketmq_TopicRuntimeInfo_fieldAccessorTable = new com.google.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_rocketmq_TopicRuntimeInfo_descriptor, diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumerData.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumerData.java index 395a79a3..a5e4b48e 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumerData.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumerData.java @@ -6,10 +6,6 @@ import java.util.HashSet; import java.util.Set; -import com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo; -import com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo; -import com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo; - /** * @author vintage.wang@gmail.com shijia.wxr@taobao.com @@ -22,37 +18,6 @@ public class ConsumerData { private Set subscriptionDataSet = new HashSet(); - public ConsumerInfo encode() { - ConsumerInfo.Builder builder = ConsumerInfo.newBuilder(); - builder.setGroupName(this.groupName); - builder.setConsumeType(this.consumeType.name()); - builder.setMessageModel(this.messageModel.name()); - if (subscriptionDataSet != null) { - int i = 0; - for (SubscriptionData data : this.subscriptionDataSet) { - builder.addSubscriptionInfos(i++, data.encode()); - } - } - - return builder.build(); - } - - - public static ConsumerData decode(ConsumerInfo info) { - ConsumerData data = new ConsumerData(); - data.setGroupName(info.getGroupName()); - data.setConsumeType(ConsumeType.valueOf(info.getConsumeType())); - data.setMessageModel(MessageModel.valueOf(info.getMessageModel())); - - // subscriptionDataSet - for (SubscriptionInfo sub : info.getSubscriptionInfosList()) { - data.getSubscriptionDataSet().add(SubscriptionData.decode(sub)); - } - - return data; - } - - public String getGroupName() { return groupName; } diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ProducerData.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ProducerData.java index ef8f95e5..4ee23b5b 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ProducerData.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ProducerData.java @@ -3,7 +3,6 @@ */ package com.alibaba.rocketmq.common.protocol.heartbeat; -import com.alibaba.rocketmq.common.protocol.MQProtos.ProducerInfo; /** @@ -14,20 +13,6 @@ public class ProducerData { private String groupName; - public ProducerInfo encode() { - ProducerInfo.Builder builder = ProducerInfo.newBuilder(); - builder.setGroupName(this.groupName); - return builder.build(); - } - - - public static ProducerData decode(ProducerInfo info) { - ProducerData data = new ProducerData(); - data.setGroupName(info.getGroupName()); - return data; - } - - public String getGroupName() { return groupName; } diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/SubscriptionData.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/SubscriptionData.java index c3976527..57bc6dad 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/SubscriptionData.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/SubscriptionData.java @@ -3,10 +3,6 @@ */ package com.alibaba.rocketmq.common.protocol.heartbeat; -import com.alibaba.rocketmq.common.protocol.MQProtos.ConsumerInfo; -import com.alibaba.rocketmq.common.protocol.MQProtos.SubscriptionInfo; - - /** * @author vintage.wang@gmail.com shijia.wxr@taobao.com * @@ -31,28 +27,6 @@ public SubscriptionData(String topic, String subString, String subNumfmt, boolea } - public static SubscriptionData decode(SubscriptionInfo info) { - SubscriptionData data = new SubscriptionData(); - data.setTopic(info.getTopic()); - data.setSubString(info.getSubString()); - data.setSubNumfmt(info.getSubNumfmt()); - data.setHasAndOperator(info.getHasAndOperator()); - return data; - } - - - public SubscriptionInfo encode() { - SubscriptionInfo.Builder builder = SubscriptionInfo.newBuilder(); - - builder.setTopic(this.topic); - builder.setSubString(this.subString); - builder.setSubNumfmt(this.subNumfmt); - builder.setHasAndOperator(this.hasAndOperator); - - return builder.build(); - } - - public String getTopic() { return topic; } diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/mq.proto b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/mq.proto index 96f826bb..72444f4b 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/mq.proto +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/mq.proto @@ -131,29 +131,29 @@ message TopicRouteInfo { // // Heart Beat // -message ProducerInfo { - required string groupName = 1; -} - -message SubscriptionInfo { - required string topic = 1; - required string subString = 2; - required string subNumfmt = 3; - required bool hasAndOperator = 4; -} - -message ConsumerInfo { - required string groupName = 1; - required string consumeType = 2; - required string messageModel = 3; - repeated SubscriptionInfo subscriptionInfos = 4; -} - -message HeartbeatInfo { - required string clientID = 1; - repeated ProducerInfo producerInfos = 2; - repeated ConsumerInfo consumerInfos = 3; -} +// message ProducerInfo { +// required string groupName = 1; +// } +// +// message SubscriptionInfo { +// required string topic = 1; +// required string subString = 2; +// required string subNumfmt = 3; +// required bool hasAndOperator = 4; +// } +// +// message ConsumerInfo { +// required string groupName = 1; +// required string consumeType = 2; +// required string messageModel = 3; +// repeated SubscriptionInfo subscriptionInfos = 4; +// } +// +// message HeartbeatInfo { +// required string clientID = 1; +// repeated ProducerInfo producerInfos = 2; +// repeated ConsumerInfo consumerInfos = 3; +// } // TODO 暂时不使用 message TopicQueuePair { From 3895b35c17085148ed48cbd309c1835d78d08c75 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 10:32:38 +0800 Subject: [PATCH 042/894] =?UTF-8?q?#27=20=E5=8E=BB=E9=99=A4ProtoBuf?= =?UTF-8?q?=E4=B8=AD=E6=97=A0=E7=94=A8=E7=9A=84Message?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/rocketmq/common/protocol/mq.proto | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/mq.proto b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/mq.proto index 72444f4b..6ba7e408 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/mq.proto +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/mq.proto @@ -104,30 +104,30 @@ enum MQResponseCode{ // // Name Server Route // -message BrokerInfo { - required string brokerName = 1; - - message BrokerAddr{ - required int64 id = 1; - required string addr = 2; - } - - repeated BrokerAddr brokerAddrs = 2; -} - -message QueueInfo{ - required string brokerName = 1; - required int32 readQueueNums = 2; - required int32 writeQueueNums = 3; - required int32 perm = 4; -} - -message TopicRouteInfo { - repeated QueueInfo queueInfos = 1; - repeated BrokerInfo brokerInfos = 2; - optional string orderTopicConf = 3; -} - + message BrokerInfo { + required string brokerName = 1; + + message BrokerAddr{ + required int64 id = 1; + required string addr = 2; + } + + repeated BrokerAddr brokerAddrs = 2; + } + + message QueueInfo{ + required string brokerName = 1; + required int32 readQueueNums = 2; + required int32 writeQueueNums = 3; + required int32 perm = 4; + } + + message TopicRouteInfo { + repeated QueueInfo queueInfos = 1; + repeated BrokerInfo brokerInfos = 2; + optional string orderTopicConf = 3; + } +// // // Heart Beat // From e97faef85f6ab5c257246d0a17f592216d558fc9 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 10:55:54 +0800 Subject: [PATCH 043/894] =?UTF-8?q?#19=20=E9=87=8D=E6=9E=84=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1Example=EF=BC=8C=E6=96=B9=E4=BE=BF=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E7=9A=84=E5=90=84=E7=A7=8D=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TransactionCheckListenerImpl.java | 16 ++++++- ...Impl.java => TransactionExecuterImpl.java} | 23 ++++------ .../transaction/TransactionProducer.java | 44 ++++++++----------- 3 files changed, 43 insertions(+), 40 deletions(-) rename rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/{TranExecuterImpl.java => TransactionExecuterImpl.java} (55%) diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java index c9db61f6..3f80cf1b 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java @@ -1,15 +1,29 @@ package com.alibaba.rocketmq.example.transaction; +import java.util.concurrent.atomic.AtomicInteger; + import com.alibaba.rocketmq.client.producer.LocalTransactionState; import com.alibaba.rocketmq.client.producer.TransactionCheckListener; import com.alibaba.rocketmq.common.MessageExt; public class TransactionCheckListenerImpl implements TransactionCheckListener { + private AtomicInteger transactionIndex = new AtomicInteger(1); + @Override public LocalTransactionState checkLocalTransactionState(MessageExt msg) { System.out.println("server checking TrMsg " + msg.toString()); - return LocalTransactionState.ROLLBACK_MESSAGE; + + int value = transactionIndex.getAndIncrement(); + + if ((value % 2) == 0) { + return LocalTransactionState.ROLLBACK_MESSAGE; + } + else if ((value % 3) == 0) { + return LocalTransactionState.COMMIT_MESSAGE; + } + + return LocalTransactionState.UNKNOW; } } diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TranExecuterImpl.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionExecuterImpl.java similarity index 55% rename from rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TranExecuterImpl.java rename to rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionExecuterImpl.java index b952ac7b..46286059 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TranExecuterImpl.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionExecuterImpl.java @@ -1,32 +1,27 @@ package com.alibaba.rocketmq.example.transaction; +import java.util.concurrent.atomic.AtomicInteger; + import com.alibaba.rocketmq.client.producer.LocalTransactionExecuter; import com.alibaba.rocketmq.client.producer.LocalTransactionState; import com.alibaba.rocketmq.common.Message; -public class TranExecuterImpl implements LocalTransactionExecuter { - private int transactionStats = -1;// 0 send ,1 commit,2 rollback - - - public int getTransactionStats() { - return transactionStats; - } - - - public void setTransactionStats(int transactionStats) { - this.transactionStats = transactionStats; - } +public class TransactionExecuterImpl implements LocalTransactionExecuter { + private AtomicInteger transactionIndex = new AtomicInteger(1); @Override public LocalTransactionState executeLocalTransactionBranch(Message msg) { - if (transactionStats == 1) { + int value = transactionIndex.getAndIncrement(); + + if ((value % 2) == 0) { return LocalTransactionState.COMMIT_MESSAGE; } - else if (transactionStats == 2) { + else if ((value % 3) == 0) { return LocalTransactionState.ROLLBACK_MESSAGE; } + return LocalTransactionState.UNKNOW; } } diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java index 5a55d4ef..6ff319b3 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java @@ -3,16 +3,10 @@ */ package com.alibaba.rocketmq.example.transaction; -import com.alibaba.rocketmq.client.exception.MQBrokerException; import com.alibaba.rocketmq.client.exception.MQClientException; -import com.alibaba.rocketmq.client.producer.DefaultMQProducer; -import com.alibaba.rocketmq.client.producer.LocalTransactionExecuter; -import com.alibaba.rocketmq.client.producer.MQProducer; -import com.alibaba.rocketmq.client.producer.SendResult; import com.alibaba.rocketmq.client.producer.TransactionCheckListener; import com.alibaba.rocketmq.client.producer.TransactionMQProducer; import com.alibaba.rocketmq.common.Message; -import com.alibaba.rocketmq.remoting.exception.RemotingException; /** @@ -21,27 +15,27 @@ */ public class TransactionProducer { public static void main(String[] args) throws MQClientException { - - TransactionCheckListener transactionCheckListener = new TransactionCheckListenerImpl(); - TransactionMQProducer producer = new TransactionMQProducer("example.producer"); - producer.setTransactionCheckListener(transactionCheckListener); - producer.start(); - String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; - TranExecuterImpl tranExecuter = new TranExecuterImpl(); - for (int i = 0; i < 100; i++) { - try { - Message msg = - new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ " + i).getBytes()); - tranExecuter.setTransactionStats(1); - producer.sendMessageInTransaction(msg, tranExecuter); - } - catch (MQClientException e) { - e.printStackTrace(); - } + TransactionCheckListener transactionCheckListener = new TransactionCheckListenerImpl(); + TransactionMQProducer producer = new TransactionMQProducer("example.producer"); + producer.setTransactionCheckListener(transactionCheckListener); + producer.start(); + + String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; + TransactionExecuterImpl tranExecuter = new TransactionExecuterImpl(); + for (int i = 0; i < 100; i++) { + try { + Message msg = + new Message("TopicTest", tags[i % tags.length], "KEY" + i, + ("Hello RocketMQ " + i).getBytes()); + producer.sendMessageInTransaction(msg, tranExecuter); + } + catch (MQClientException e) { + e.printStackTrace(); } + } + + producer.shutdown(); - producer.shutdown(); - } } From eb8f54ad8411c9ab9ff744e9a3eddfb2973775a1 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 11:03:17 +0800 Subject: [PATCH 044/894] =?UTF-8?q?#19=20=E8=B0=83=E8=AF=95=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1Example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/alibaba/rocketmq/broker/BrokerController.java | 3 ++- .../example/transaction/TransactionCheckListenerImpl.java | 6 ++++-- .../rocketmq/example/transaction/TransactionProducer.java | 4 +++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java index 176be02e..ee65f2fb 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java @@ -170,7 +170,8 @@ public boolean initialize() { // 初始化存储层 if (result) { try { - this.messageStore = new DefaultMessageStore(this.messageStoreConfig); + this.messageStore = + new DefaultMessageStore(this.messageStoreConfig, this.defaultTransactionCheckExecuter); } catch (IOException e) { result = false; diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java index 3f80cf1b..7381ec14 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java @@ -16,8 +16,10 @@ public LocalTransactionState checkLocalTransactionState(MessageExt msg) { System.out.println("server checking TrMsg " + msg.toString()); int value = transactionIndex.getAndIncrement(); - - if ((value % 2) == 0) { + if (value == 0) { + throw new RuntimeException("Could not find db"); + } + else if ((value % 2) == 0) { return LocalTransactionState.ROLLBACK_MESSAGE; } else if ((value % 3) == 0) { diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java index 6ff319b3..3bb4d4c4 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java @@ -4,6 +4,7 @@ package com.alibaba.rocketmq.example.transaction; import com.alibaba.rocketmq.client.exception.MQClientException; +import com.alibaba.rocketmq.client.producer.SendResult; import com.alibaba.rocketmq.client.producer.TransactionCheckListener; import com.alibaba.rocketmq.client.producer.TransactionMQProducer; import com.alibaba.rocketmq.common.Message; @@ -28,7 +29,8 @@ public static void main(String[] args) throws MQClientException { Message msg = new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ " + i).getBytes()); - producer.sendMessageInTransaction(msg, tranExecuter); + SendResult sendResult = producer.sendMessageInTransaction(msg, tranExecuter); + System.out.println(sendResult); } catch (MQClientException e) { e.printStackTrace(); From 237bc5fa3e22197274ed13808a39254c71241cc2 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 13:53:46 +0800 Subject: [PATCH 045/894] =?UTF-8?q?#19=20=E6=B5=8B=E8=AF=95=E6=9C=BA?= =?UTF-8?q?=E6=94=B9=E4=B8=BA22?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java index 7f78b69d..0fa67f0c 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java @@ -761,14 +761,14 @@ public TopicRouteData getTopicRouteInfoFromNameServer_real(final String topic, f public TopicRouteData getTopicRouteInfoFromNameServer(final String topic, final long timeoutMillis) throws RemotingException, MQClientException, InterruptedException, InvalidProtocolBufferException { TopicRouteData topicRouteData = new TopicRouteData(); - topicRouteData.setOrderTopicConf("dev170021.sqa.cm6:4;"); + topicRouteData.setOrderTopicConf("dev170022.sqa.cm6:4;"); List brokerDatas = new ArrayList(); BrokerData bd = new BrokerData(); HashMap brokerAddrs = new HashMap(); - brokerAddrs.put(0L, "10.235.170.21:10911"); + brokerAddrs.put(0L, "10.235.170.22:10911"); - bd.setBrokerName("dev170021.sqa.cm6"); + bd.setBrokerName("dev170022.sqa.cm6"); bd.setBrokerAddrs(brokerAddrs); brokerDatas.add(bd); @@ -776,7 +776,7 @@ public TopicRouteData getTopicRouteInfoFromNameServer(final String topic, final topicRouteData.setBrokerDatas(brokerDatas); List queueDatas = new ArrayList(); QueueData queueData = new QueueData(); - queueData.setBrokerName("dev170021.sqa.cm6"); + queueData.setBrokerName("dev170022.sqa.cm6"); queueData.setPerm(6); queueData.setReadQueueNums(4); queueData.setWriteQueueNums(4); From df2550bdefe05ea425417dccd7ff29bdf841ed89 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 14:18:14 +0800 Subject: [PATCH 046/894] =?UTF-8?q?fixed=2034=20=E9=80=9A=E4=BF=A1?= =?UTF-8?q?=E5=B1=82=E5=AF=B9=E8=B1=A1=E5=9C=A8=E5=85=B3=E9=97=AD=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=86=85=E9=83=A8=E5=AF=B9=E8=B1=A1=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E6=9C=89=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/example/transaction/TransactionProducer.java | 6 +++++- .../rocketmq/remoting/netty/NettyRemotingClient.java | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java index 3bb4d4c4..aa42056a 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java @@ -15,7 +15,7 @@ * */ public class TransactionProducer { - public static void main(String[] args) throws MQClientException { + public static void main(String[] args) throws MQClientException, InterruptedException { TransactionCheckListener transactionCheckListener = new TransactionCheckListenerImpl(); TransactionMQProducer producer = new TransactionMQProducer("example.producer"); @@ -37,6 +37,10 @@ public static void main(String[] args) throws MQClientException { } } + for (int i = 0; i < 100000; i++) { + Thread.sleep(1000); + } + producer.shutdown(); } diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java index 848c207b..8251897a 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java @@ -298,10 +298,6 @@ public void run() { @Override public void shutdown() { try { - if (this.nettyEventExecuter != null) { - this.nettyEventExecuter.shutdown(); - } - this.timer.cancel(); for (ChannelWrapper cw : this.channelTables.values()) { @@ -311,6 +307,10 @@ public void shutdown() { this.channelTables.clear(); this.bootstrap.shutdown(); + + if (this.nettyEventExecuter != null) { + this.nettyEventExecuter.shutdown(); + } } catch (Exception e) { log.error("NettyRemotingClient shutdown exception, ", e); From 2a257f5296120f0a1475478cc6c3b0e980c64145 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 16:28:47 +0800 Subject: [PATCH 047/894] =?UTF-8?q?fixed=20#36=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E4=BA=8B=E5=8A=A1=E8=BF=87=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=9C=AA=E7=9F=A5=E7=8A=B6=E6=80=81=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../protocol/header/EndTransactionRequestHeader.java | 4 ++++ .../transaction/TransactionCheckListenerImpl.java | 6 +++--- .../example/transaction/TransactionExecuterImpl.java | 9 ++++++--- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java index 6c534406..d8689a49 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java @@ -27,6 +27,10 @@ public class EndTransactionRequestHeader implements CommandCustomHeader { @Override public void checkFields() throws RemotingCommandException { + if (MessageSysFlag.TransactionNotType == this.commitOrRollback) { + return; + } + if (MessageSysFlag.TransactionCommitType == this.commitOrRollback) { return; } diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java index 7381ec14..2898b644 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java @@ -8,7 +8,7 @@ public class TransactionCheckListenerImpl implements TransactionCheckListener { - private AtomicInteger transactionIndex = new AtomicInteger(1); + private AtomicInteger transactionIndex = new AtomicInteger(0); @Override @@ -19,10 +19,10 @@ public LocalTransactionState checkLocalTransactionState(MessageExt msg) { if (value == 0) { throw new RuntimeException("Could not find db"); } - else if ((value % 2) == 0) { + else if ((value % 5) == 0) { return LocalTransactionState.ROLLBACK_MESSAGE; } - else if ((value % 3) == 0) { + else if ((value % 4) == 0) { return LocalTransactionState.COMMIT_MESSAGE; } diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionExecuterImpl.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionExecuterImpl.java index 46286059..0184ef67 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionExecuterImpl.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionExecuterImpl.java @@ -15,12 +15,15 @@ public class TransactionExecuterImpl implements LocalTransactionExecuter { public LocalTransactionState executeLocalTransactionBranch(Message msg) { int value = transactionIndex.getAndIncrement(); - if ((value % 2) == 0) { - return LocalTransactionState.COMMIT_MESSAGE; + if (value == 0) { + throw new RuntimeException("Could not find db"); } - else if ((value % 3) == 0) { + else if ((value % 5) == 0) { return LocalTransactionState.ROLLBACK_MESSAGE; } + else if ((value % 4) == 0) { + return LocalTransactionState.COMMIT_MESSAGE; + } return LocalTransactionState.UNKNOW; } From a3babc21c5f141d0a06cda51123e9442e4a74bc7 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 17:26:39 +0800 Subject: [PATCH 048/894] =?UTF-8?q?#19=20=E8=B0=83=E8=AF=95=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1Example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/rocketmq/client/impl/ClientRemotingProcessor.java | 3 +-- .../example/transaction/TransactionCheckListenerImpl.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java index 48986e05..ba4df8c7 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java @@ -81,8 +81,7 @@ private void processTransactionState(// RemotingCommand request = RemotingCommand.createRequestCommand(MQRequestCode.END_TRANSACTION_VALUE, thisHeader); if (exception != null) { - request.setRemark("checkLocalTransactionState Exception: " + exception.toString() + ", " - + exception.getMessage()); + request.setRemark("checkLocalTransactionState Exception: " + exception.toString()); } try { diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java index 2898b644..58d53116 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionCheckListenerImpl.java @@ -16,7 +16,7 @@ public LocalTransactionState checkLocalTransactionState(MessageExt msg) { System.out.println("server checking TrMsg " + msg.toString()); int value = transactionIndex.getAndIncrement(); - if (value == 0) { + if ((value % 6) == 0) { throw new RuntimeException("Could not find db"); } else if ((value % 5) == 0) { From 37ec27e927e92fe193ed6381db4db48bbb270c61 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 18:22:56 +0800 Subject: [PATCH 049/894] =?UTF-8?q?#19=20=E4=B8=8D=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E6=BB=9A=E4=B8=8E=E5=9B=9E=E6=BB=9A=E7=8A=B6?= =?UTF-8?q?=E6=80=81=EF=BC=8CProducer=E4=B8=8EBroker=E9=83=BD=E8=A6=81?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/broker/processor/EndTransactionProcessor.java | 2 ++ .../alibaba/rocketmq/client/impl/ClientRemotingProcessor.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java index f226d6b4..1bb627a1 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java @@ -94,6 +94,8 @@ public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand } // 回滚 case MessageSysFlag.TransactionRollbackType: { + logTransaction.warn("check producer transaction state, the producer rollback the message.\n"// + + "RequestHeader: {} Remark: {}", requestHeader.toString(), request.getRemark()); break; } default: diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java index ba4df8c7..36a5164d 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java @@ -70,9 +70,11 @@ private void processTransactionState(// break; case ROLLBACK_MESSAGE: thisHeader.setCommitOrRollback(MessageSysFlag.TransactionRollbackType); + log.warn("when broker check, client rollback this transaction, {}", thisHeader); break; case UNKNOW: thisHeader.setCommitOrRollback(MessageSysFlag.TransactionNotType); + log.warn("when broker check, client donot know this transaction state, {}", thisHeader); break; default: break; From ba850e7821fb330f1298e6def59397cac7d10805 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 18:39:05 +0800 Subject: [PATCH 050/894] =?UTF-8?q?#19=20=E4=B8=8D=E6=8F=90=E4=BA=A4?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E6=BB=9A=E4=B8=8E=E5=9B=9E=E6=BB=9A=E7=8A=B6?= =?UTF-8?q?=E6=80=81=EF=BC=8CProducer=E4=B8=8EBroker=E9=83=BD=E8=A6=81?= =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../broker/processor/EndTransactionProcessor.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java index 1bb627a1..8438373b 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java @@ -17,6 +17,7 @@ import com.alibaba.rocketmq.common.protocol.MQProtos.MQResponseCode; import com.alibaba.rocketmq.common.protocol.header.EndTransactionRequestHeader; import com.alibaba.rocketmq.common.sysflag.MessageSysFlag; +import com.alibaba.rocketmq.remoting.common.RemotingHelper; import com.alibaba.rocketmq.remoting.exception.RemotingCommandException; import com.alibaba.rocketmq.remoting.netty.NettyRequestProcessor; import com.alibaba.rocketmq.remoting.protocol.RemotingCommand; @@ -84,8 +85,9 @@ public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand switch (requestHeader.getCommitOrRollback()) { // 不提交也不回滚 case MessageSysFlag.TransactionNotType: { - logTransaction.warn("check producer transaction state, but it's pending status.\n"// - + "RequestHeader: {} Remark: {}", requestHeader.toString(), request.getRemark()); + logTransaction.warn("check producer[{}] transaction state, but it's pending status.\n"// + + "RequestHeader: {} Remark: {}", RemotingHelper.parseChannelRemoteAddr(ctx.channel()), + requestHeader.toString(), request.getRemark()); return null; } // 提交 @@ -94,8 +96,9 @@ public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand } // 回滚 case MessageSysFlag.TransactionRollbackType: { - logTransaction.warn("check producer transaction state, the producer rollback the message.\n"// - + "RequestHeader: {} Remark: {}", requestHeader.toString(), request.getRemark()); + logTransaction.warn("check producer[{}] transaction state, the producer rollback the message.\n"// + + "RequestHeader: {} Remark: {}", RemotingHelper.parseChannelRemoteAddr(ctx.channel()), + requestHeader.toString(), request.getRemark()); break; } default: From 16020236f292f0020e885066c9a7457fecc055f6 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Thu, 23 May 2013 18:40:56 +0800 Subject: [PATCH 051/894] =?UTF-8?q?#4=20=E4=BF=AE=E6=94=B9=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E6=9C=BA=E4=B8=BA21?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java index 0fa67f0c..7f78b69d 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java @@ -761,14 +761,14 @@ public TopicRouteData getTopicRouteInfoFromNameServer_real(final String topic, f public TopicRouteData getTopicRouteInfoFromNameServer(final String topic, final long timeoutMillis) throws RemotingException, MQClientException, InterruptedException, InvalidProtocolBufferException { TopicRouteData topicRouteData = new TopicRouteData(); - topicRouteData.setOrderTopicConf("dev170022.sqa.cm6:4;"); + topicRouteData.setOrderTopicConf("dev170021.sqa.cm6:4;"); List brokerDatas = new ArrayList(); BrokerData bd = new BrokerData(); HashMap brokerAddrs = new HashMap(); - brokerAddrs.put(0L, "10.235.170.22:10911"); + brokerAddrs.put(0L, "10.235.170.21:10911"); - bd.setBrokerName("dev170022.sqa.cm6"); + bd.setBrokerName("dev170021.sqa.cm6"); bd.setBrokerAddrs(brokerAddrs); brokerDatas.add(bd); @@ -776,7 +776,7 @@ public TopicRouteData getTopicRouteInfoFromNameServer(final String topic, final topicRouteData.setBrokerDatas(brokerDatas); List queueDatas = new ArrayList(); QueueData queueData = new QueueData(); - queueData.setBrokerName("dev170022.sqa.cm6"); + queueData.setBrokerName("dev170021.sqa.cm6"); queueData.setPerm(6); queueData.setReadQueueNums(4); queueData.setWriteQueueNums(4); From 209b7462f2091b581606b6ee3dd6575dce943ce5 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Fri, 24 May 2013 09:51:21 +0800 Subject: [PATCH 052/894] =?UTF-8?q?fixed=20#37=20=E5=8D=87=E7=BA=A7Netty?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=88=B04.0.0.CR3=EF=BC=8C=E5=8F=A6=E5=A4=96?= =?UTF-8?q?=E6=9B=B4=E6=96=B0Netty=20shutdown=E7=94=A8=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../transaction/TransactionProducer.java | 2 +- .../remoting/netty/NettyRemotingClient.java | 10 ++++++---- .../remoting/netty/NettyRemotingServer.java | 17 ++++++++++------- 4 files changed, 18 insertions(+), 13 deletions(-) diff --git a/pom.xml b/pom.xml index 71d62f3b..d3dd5b71 100644 --- a/pom.xml +++ b/pom.xml @@ -178,7 +178,7 @@ io.netty netty-all - 4.0.0.CR2 + 4.0.0.CR3 commons-io diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java index aa42056a..5ef0fb2e 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java @@ -24,7 +24,7 @@ public static void main(String[] args) throws MQClientException, InterruptedExce String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; TransactionExecuterImpl tranExecuter = new TransactionExecuterImpl(); - for (int i = 0; i < 100; i++) { + for (int i = 0; i < 1000; i++) { try { Message msg = new Message("TopicTest", tags[i % tags.length], "KEY" + i, diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java index 8251897a..dfeb6eb2 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java @@ -13,6 +13,7 @@ import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.ChannelPromise; +import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioSocketChannel; @@ -60,6 +61,7 @@ public class NettyRemotingClient extends NettyRemotingAbstract implements Remoti private final NettyClientConfig nettyClientConfig; private final Bootstrap bootstrap = new Bootstrap(); + private final EventLoopGroup eventLoopGroup; private final Lock lockChannelTables = new ReentrantLock(); private final ConcurrentHashMap channelTables = @@ -215,6 +217,7 @@ public Thread newThread(Runnable r) { } }); + this.eventLoopGroup = new NioEventLoopGroup(nettyClientConfig.getClientSelectorThreads()); } @@ -248,9 +251,8 @@ private void scanNotActiveChannel() throws InterruptedException { @Override public void start() { - this.bootstrap.group(new NioEventLoopGroup(nettyClientConfig.getClientSelectorThreads())) - .channel(NioSocketChannel.class).option(ChannelOption.TCP_NODELAY, true) - .handler(new ChannelInitializer() { + this.bootstrap.group(this.eventLoopGroup).channel(NioSocketChannel.class) + .option(ChannelOption.TCP_NODELAY, true).handler(new ChannelInitializer() { @Override public void initChannel(SocketChannel ch) throws Exception { ch.pipeline().addLast(// @@ -306,7 +308,7 @@ public void shutdown() { this.channelTables.clear(); - this.bootstrap.shutdown(); + this.eventLoopGroup.shutdownGracefully(); if (this.nettyEventExecuter != null) { this.nettyEventExecuter.shutdown(); diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java index 853c5ed4..2090c36d 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java @@ -11,6 +11,7 @@ import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.ChannelPromise; +import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.nio.NioServerSocketChannel; @@ -44,8 +45,9 @@ public class NettyRemotingServer extends NettyRemotingAbstract implements RemotingServer { private static final Logger log = LoggerFactory.getLogger(RemotingHelper.RemotingLogName); - private ServerBootstrap serverBootstrap; - private NettyServerConfig nettyServerConfig; + private final ServerBootstrap serverBootstrap; + private final EventLoopGroup eventLoopGroup; + private final NettyServerConfig nettyServerConfig; // 处理Callback应答器 private final ExecutorService publicExecutor; @@ -157,15 +159,16 @@ public Thread newThread(Runnable r) { return new Thread(r, "NettyServerPublicExecutor_" + this.threadIndex.incrementAndGet()); } }); + + this.eventLoopGroup = new NioEventLoopGroup(nettyServerConfig.getServerSelectorThreads()); } @Override public void start() throws InterruptedException { - this.serverBootstrap - .group(new NioEventLoopGroup(this.nettyServerConfig.getServerSelectorThreads()), - new NioEventLoopGroup()).channel(NioServerSocketChannel.class) - .option(ChannelOption.SO_BACKLOG, 65536).childOption(ChannelOption.TCP_NODELAY, true) + this.serverBootstrap.group(this.eventLoopGroup, new NioEventLoopGroup()) + .channel(NioServerSocketChannel.class).option(ChannelOption.SO_BACKLOG, 65536) + .childOption(ChannelOption.TCP_NODELAY, true) .localAddress(new InetSocketAddress(this.nettyServerConfig.getListenPort())) .childHandler(new ChannelInitializer() { @Override @@ -189,7 +192,7 @@ public void initChannel(SocketChannel ch) throws Exception { @Override public void shutdown() { try { - this.serverBootstrap.shutdown(); + this.eventLoopGroup.shutdownGracefully(); if (this.nettyEventExecuter != null) { this.nettyEventExecuter.shutdown(); From df91d59e38a18852ecf5612c9b8f073fbb7c08f0 Mon Sep 17 00:00:00 2001 From: "jin.qian" Date: Fri, 24 May 2013 15:57:20 +0800 Subject: [PATCH 053/894] =?UTF-8?q?#31=20=E6=B7=BB=E5=8A=A0channel=20close?= =?UTF-8?q?=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remoting/netty/NettyRemotingClient.java | 1331 +++++++++-------- 1 file changed, 667 insertions(+), 664 deletions(-) diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java index dfeb6eb2..41d66ba4 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java @@ -1,664 +1,667 @@ -/** - * $Id: NettyRemotingClient.java 1831 2013-05-16 01:39:51Z shijia.wxr $ - */ -package com.alibaba.rocketmq.remoting.netty; - -import io.netty.bootstrap.Bootstrap; -import io.netty.channel.Channel; -import io.netty.channel.ChannelDuplexHandler; -import io.netty.channel.ChannelFuture; -import io.netty.channel.ChannelFutureListener; -import io.netty.channel.ChannelHandlerContext; -import io.netty.channel.ChannelInboundMessageHandlerAdapter; -import io.netty.channel.ChannelInitializer; -import io.netty.channel.ChannelOption; -import io.netty.channel.ChannelPromise; -import io.netty.channel.EventLoopGroup; -import io.netty.channel.nio.NioEventLoopGroup; -import io.netty.channel.socket.SocketChannel; -import io.netty.channel.socket.nio.NioSocketChannel; -import io.netty.util.concurrent.DefaultEventExecutorGroup; - -import java.net.SocketAddress; -import java.util.List; -import java.util.Random; -import java.util.Timer; -import java.util.TimerTask; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ThreadFactory; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicInteger; -import java.util.concurrent.atomic.AtomicReference; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.alibaba.rocketmq.remoting.ChannelEventListener; -import com.alibaba.rocketmq.remoting.InvokeCallback; -import com.alibaba.rocketmq.remoting.RemotingClient; -import com.alibaba.rocketmq.remoting.common.Pair; -import com.alibaba.rocketmq.remoting.common.RemotingHelper; -import com.alibaba.rocketmq.remoting.exception.RemotingConnectException; -import com.alibaba.rocketmq.remoting.exception.RemotingSendRequestException; -import com.alibaba.rocketmq.remoting.exception.RemotingTimeoutException; -import com.alibaba.rocketmq.remoting.exception.RemotingTooMuchRequestException; -import com.alibaba.rocketmq.remoting.protocol.RemotingCommand; - - -/** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com - * - */ -public class NettyRemotingClient extends NettyRemotingAbstract implements RemotingClient { - private static final Logger log = LoggerFactory.getLogger(RemotingHelper.RemotingLogName); - - private static final long LockTimeoutMillis = 3000; - - private final NettyClientConfig nettyClientConfig; - private final Bootstrap bootstrap = new Bootstrap(); - private final EventLoopGroup eventLoopGroup; - - private final Lock lockChannelTables = new ReentrantLock(); - private final ConcurrentHashMap channelTables = - new ConcurrentHashMap(); - - // 定时器 - private final Timer timer = new Timer("ClientHouseKeepingService", true); - - // Name server相关 - private final AtomicReference> namesrvAddrList = new AtomicReference>(); - private final AtomicReference namesrvAddrChoosed = new AtomicReference(); - private final AtomicInteger namesrvIndex = new AtomicInteger(initValueIndex()); - private final Lock lockNamesrvChannel = new ReentrantLock(); - - // 处理Callback应答器 - private final ExecutorService publicExecutor; - - private final ChannelEventListener channelEventListener; - - class ChannelWrapper { - private final Channel channel; - private volatile long lastActiveTimestamp = System.currentTimeMillis(); - - - public ChannelWrapper(Channel channel) { - this.channel = channel; - } - - - public long getLastActiveTimestamp() { - return lastActiveTimestamp; - } - - - public void setLastActiveTimestamp(long lastActiveTimestamp) { - this.lastActiveTimestamp = lastActiveTimestamp; - } - - - public Channel getChannel() { - return channel; - } - } - - class NettyClientHandler extends ChannelInboundMessageHandlerAdapter { - - @Override - public void messageReceived(ChannelHandlerContext ctx, Object msg) throws Exception { - processMessageReceived(ctx, msg); - } - } - - class NettyConnetManageHandler extends ChannelDuplexHandler { - @Override - public void connect(ChannelHandlerContext ctx, SocketAddress remoteAddress, SocketAddress localAddress, - ChannelPromise promise) throws Exception { - final String local = localAddress == null ? "UNKNOW" : localAddress.toString(); - final String remote = remoteAddress == null ? "UNKNOW" : remoteAddress.toString(); - log.info("NETTY CLIENT PIPELINE: CONNECT {} => {}", local, remote); - super.connect(ctx, remoteAddress, localAddress, promise); - - if (NettyRemotingClient.this.channelEventListener != null) { - NettyRemotingClient.this.putNettyEvent(new NettyEvent(NettyEventType.CONNECT, remoteAddress - .toString(), ctx.channel())); - } - } - - - @Override - public void disconnect(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception { - final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); - log.info("NETTY CLIENT PIPELINE: DISCONNECT {}", remoteAddress); - closeChannel(ctx.channel()); - super.disconnect(ctx, promise); - - if (NettyRemotingClient.this.channelEventListener != null) { - NettyRemotingClient.this.putNettyEvent(new NettyEvent(NettyEventType.CLOSE, remoteAddress - .toString(), ctx.channel())); - } - } - - - @Override - public void close(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception { - final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); - log.info("NETTY CLIENT PIPELINE: CLOSE {}", remoteAddress); - closeChannel(ctx.channel()); - super.close(ctx, promise); - - if (NettyRemotingClient.this.channelEventListener != null) { - NettyRemotingClient.this.putNettyEvent(new NettyEvent(NettyEventType.CLOSE, remoteAddress - .toString(), ctx.channel())); - } - } - - - @Override - public void flush(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception { - ctx.flush(promise); - } - - - @Override - public void inboundBufferUpdated(ChannelHandlerContext ctx) throws Exception { - ctx.fireInboundBufferUpdated(); - } - - - @Override - public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { - final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); - log.warn("NETTY CLIENT PIPELINE: exceptionCaught {}", remoteAddress); - log.warn("NETTY CLIENT PIPELINE: exceptionCaught exception.", cause); - closeChannel(ctx.channel()); - if (NettyRemotingClient.this.channelEventListener != null) { - NettyRemotingClient.this.putNettyEvent(new NettyEvent(NettyEventType.EXCEPTION, remoteAddress - .toString(), ctx.channel())); - } - } - } - - - private static int initValueIndex() { - Random r = new Random(); - - return Math.abs(r.nextInt()) % 999; - } - - - public NettyRemotingClient(final NettyClientConfig nettyClientConfig) { - this(nettyClientConfig, null); - } - - - public NettyRemotingClient(final NettyClientConfig nettyClientConfig, - final ChannelEventListener channelEventListener) { - super(nettyClientConfig.getClientOnewaySemaphoreValue(), nettyClientConfig.getClientAsyncSemaphoreValue()); - this.nettyClientConfig = nettyClientConfig; - this.channelEventListener = channelEventListener; - - int publicThreadNums = nettyClientConfig.getClientCallbackExecutorThreads(); - if (publicThreadNums <= 0) { - publicThreadNums = 4; - } - - this.publicExecutor = Executors.newFixedThreadPool(publicThreadNums, new ThreadFactory() { - private AtomicInteger threadIndex = new AtomicInteger(0); - - - @Override - public Thread newThread(Runnable r) { - return new Thread(r, "NettyClientPublicExecutor_" + this.threadIndex.incrementAndGet()); - } - }); - - this.eventLoopGroup = new NioEventLoopGroup(nettyClientConfig.getClientSelectorThreads()); - } - - - private void scanNotActiveChannel() throws InterruptedException { - // 加锁,尝试扫描过期连接 - if (this.lockChannelTables.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { - try { - for (String addr : this.channelTables.keySet()) { - ChannelWrapper cw = this.channelTables.get(addr); - if (cw != null) { - long diff = System.currentTimeMillis() - cw.getLastActiveTimestamp(); - if (diff > this.nettyClientConfig.getChannelNotActiveInterval()) { - log.warn("the channel[{}] not active for a while[{}ms], close it forcibly", addr, diff); - this.closeChannel(addr, cw.getChannel()); - } - } - } - } - catch (Exception e) { - log.error("scanNotActiveChannel: close channel exception", e); - } - finally { - this.lockChannelTables.unlock(); - } - } - else { - log.warn("scanNotActiveChannel: try to lock channel table, but timeout, {}ms", LockTimeoutMillis); - } - } - - - @Override - public void start() { - this.bootstrap.group(this.eventLoopGroup).channel(NioSocketChannel.class) - .option(ChannelOption.TCP_NODELAY, true).handler(new ChannelInitializer() { - @Override - public void initChannel(SocketChannel ch) throws Exception { - ch.pipeline().addLast(// - new DefaultEventExecutorGroup(nettyClientConfig.getClientWorkerThreads()), // - new NettyEncoder(), // - new NettyDecoder(), // - new NettyConnetManageHandler(), new NettyClientHandler()); - } - }); - - // 每隔1秒扫描下异步调用超时情况 - this.timer.scheduleAtFixedRate(new TimerTask() { - - @Override - public void run() { - try { - NettyRemotingClient.this.scanResponseTable(); - } - catch (Exception e) { - log.error("scanResponseTable exception", e); - } - } - }, 1000 * 3, 1000); - - // 每隔10秒扫描下不活动的连接 - this.timer.scheduleAtFixedRate(new TimerTask() { - - @Override - public void run() { - try { - NettyRemotingClient.this.scanNotActiveChannel(); - } - catch (Exception e) { - log.error("scanNotActiveChannel exception", e); - } - } - }, 1000 * 10, 1000 * 10); - - if (this.channelEventListener != null) { - this.nettyEventExecuter.start(); - } - } - - - @Override - public void shutdown() { - try { - this.timer.cancel(); - - for (ChannelWrapper cw : this.channelTables.values()) { - this.closeChannel(null, cw.getChannel()); - } - - this.channelTables.clear(); - - this.eventLoopGroup.shutdownGracefully(); - - if (this.nettyEventExecuter != null) { - this.nettyEventExecuter.shutdown(); - } - } - catch (Exception e) { - log.error("NettyRemotingClient shutdown exception, ", e); - } - - if (this.publicExecutor != null) { - try { - this.publicExecutor.shutdown(); - } - catch (Exception e) { - log.error("NettyRemotingServer shutdown exception, ", e); - } - } - } - - - private Channel getAndCreateChannel(final String addr) throws InterruptedException { - if (null == addr) - return getAndCreateNameserverChannel(); - - ChannelWrapper cw = this.channelTables.get(addr); - if (cw != null) { - cw.setLastActiveTimestamp(System.currentTimeMillis()); - return cw.getChannel(); - } - - return this.createChannel(addr); - } - - - private Channel getAndCreateNameserverChannel() throws InterruptedException { - String addr = this.namesrvAddrChoosed.get(); - if (addr != null) { - ChannelWrapper cw = this.channelTables.get(addr); - if (cw != null) { - cw.setLastActiveTimestamp(System.currentTimeMillis()); - return cw.getChannel(); - } - } - - final List addrList = this.namesrvAddrList.get(); - // 加锁,尝试创建连接 - if (this.lockNamesrvChannel.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { - try { - addr = this.namesrvAddrChoosed.get(); - if (addr != null) { - ChannelWrapper cw = this.channelTables.get(addr); - if (cw != null) { - cw.setLastActiveTimestamp(System.currentTimeMillis()); - return cw.getChannel(); - } - } - - if (addrList != null && !addrList.isEmpty()) { - for (int i = 0; i < addrList.size(); i++) { - int index = this.namesrvIndex.incrementAndGet(); - index = Math.abs(index); - index = index % addrList.size(); - String newAddr = addrList.get(index); - - this.namesrvAddrChoosed.set(newAddr); - Channel channelNew = this.createChannel(newAddr); - if (channelNew != null) - return channelNew; - } - } - } - catch (Exception e) { - log.error("getAndCreateNameserverChannel: create name server channel exception", e); - } - finally { - this.lockNamesrvChannel.unlock(); - } - } - else { - log.warn("getAndCreateNameserverChannel: try to lock name server, but timeout, {}ms", - LockTimeoutMillis); - } - - return null; - } - - - private Channel createChannel(final String addr) throws InterruptedException { - // 加锁,尝试创建连接 - if (this.lockChannelTables.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { - try { - ChannelWrapper cw = this.channelTables.get(addr); - if (cw != null) { - cw.setLastActiveTimestamp(System.currentTimeMillis()); - return cw.getChannel(); - } - - ChannelFuture channelFuture = this.bootstrap.connect(RemotingHelper.string2SocketAddress(addr)); - Channel channel = null; - if (channelFuture.awaitUninterruptibly(this.nettyClientConfig.getConnectTimeoutMillis())) { - channel = channelFuture.channel(); - if (!channel.isActive()) { - log.warn("connect {} in {}ms ok, but channel not active", addr, - this.nettyClientConfig.getConnectTimeoutMillis()); - return null; - } - } - else { - log.error("connect {} in {}ms timeout", addr, this.nettyClientConfig.getConnectTimeoutMillis()); - return null; - } - - log.info("connect {} success, and add to the channel table", addr); - this.channelTables.put(addr, new ChannelWrapper(channel)); - return channel; - } - catch (Exception e) { - log.error("createChannel: create channel exception", e); - } - finally { - this.lockChannelTables.unlock(); - } - } - else { - log.warn("createChannel: try to lock channel table, but timeout, {}ms", LockTimeoutMillis); - } - - return null; - } - - - public void closeChannel(final String addr, final Channel channel) { - if (null == channel) - return; - - final String addrRemote = null == addr ? RemotingHelper.parseChannelRemoteAddr(channel) : addr; - - try { - if (this.lockChannelTables.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { - try { - boolean removeItemFromTable = true; - final ChannelWrapper prevCW = this.channelTables.get(addrRemote); - - log.info("closeChannel: begin close the channel[{}] Found: {}", addrRemote, (prevCW != null)); - - if (null == prevCW) { - log.info("closeChannel: the channel[{}] has been removed from the channel table before", - addrRemote); - removeItemFromTable = false; - } - else if (prevCW.getChannel() != channel) { - log.info( - "closeChannel: the channel[{}] has been closed before, and has been created again, nothing to do.", - addrRemote); - removeItemFromTable = false; - } - - if (removeItemFromTable) { - this.channelTables.remove(addrRemote); - log.info("closeChannel: the channel[{}] was removed from channel table", addrRemote); - } - - channel.close().addListener(new ChannelFutureListener() { - @Override - public void operationComplete(ChannelFuture future) throws Exception { - log.info("closeChannel: close the connection to remote address[{}] result: {}", - addrRemote, future.isSuccess()); - } - }); - } - catch (Exception e) { - log.error("closeChannel: close the channel exception", e); - } - finally { - this.lockChannelTables.unlock(); - } - } - else { - log.warn("closeChannel: try to lock channel table, but timeout, {}ms", LockTimeoutMillis); - } - } - catch (InterruptedException e) { - log.error("closeChannel exception", e); - } - } - - - public void closeChannel(final Channel channel) { - if (null == channel) - return; - - try { - if (this.lockChannelTables.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { - try { - boolean removeItemFromTable = true; - ChannelWrapper prevCW = null; - String addrRemote = null; - for (String key : channelTables.keySet()) { - ChannelWrapper prev = this.channelTables.get(key); - if (prev.channel.equals(channel)) { - prevCW = prev; - addrRemote = key; - break; - } - } - - if (null == prevCW) { - log.info( - "eventCloseChannel: the channel[{}] has been removed from the channel table before", - addrRemote); - removeItemFromTable = false; - } - - if (removeItemFromTable) { - this.channelTables.remove(addrRemote); - log.info("closeChannel: the channel[{}] was removed from channel table", addrRemote); - } - } - catch (Exception e) { - log.error("closeChannel: close the channel exception", e); - } - finally { - this.lockChannelTables.unlock(); - } - } - else { - log.warn("closeChannel: try to lock channel table, but timeout, {}ms", LockTimeoutMillis); - } - } - catch (InterruptedException e) { - log.error("closeChannel exception", e); - } - } - - - @Override - public void registerProcessor(int requestCode, NettyRequestProcessor processor, Executor executor) { - Executor executorThis = executor; - if (null == executor) { - executorThis = this.publicExecutor; - } - - Pair pair = - new Pair(processor, executorThis); - this.processorTable.put(requestCode, pair); - } - - - @Override - public RemotingCommand invokeSync(String addr, final RemotingCommand request, long timeoutMillis) - throws InterruptedException, RemotingConnectException, RemotingSendRequestException, - RemotingTimeoutException { - final Channel channel = this.getAndCreateChannel(addr); - if (channel != null && channel.isActive()) { - try { - return this.invokeSyncImpl(channel, request, timeoutMillis); - } - catch (RemotingSendRequestException e) { - log.warn("invokeSync: send request exception, so close the channel[{}]", addr); - this.closeChannel(addr, channel); - throw e; - } - catch (RemotingTimeoutException e) { - log.warn("invokeSync: wait response timeout exception, so close the channel[{}]", addr); - this.closeChannel(addr, channel); - throw e; - } - } - else { - this.closeChannel(addr, channel); - throw new RemotingConnectException(addr); - } - } - - - @Override - public void invokeAsync(String addr, RemotingCommand request, long timeoutMillis, InvokeCallback invokeCallback) - throws InterruptedException, RemotingConnectException, RemotingTooMuchRequestException, - RemotingTimeoutException, RemotingSendRequestException { - final Channel channel = this.getAndCreateChannel(addr); - if (channel != null && channel.isActive()) { - try { - this.invokeAsyncImpl(channel, request, timeoutMillis, invokeCallback); - } - catch (RemotingSendRequestException e) { - log.warn("invokeAsync: send request exception, so close the channel[{}]", addr); - this.closeChannel(addr, channel); - throw e; - } - } - else { - this.closeChannel(addr, channel); - throw new RemotingConnectException(addr); - } - } - - - @Override - public void invokeOneway(String addr, RemotingCommand request, long timeoutMillis) - throws InterruptedException, RemotingConnectException, RemotingTooMuchRequestException, - RemotingTimeoutException, RemotingSendRequestException { - final Channel channel = this.getAndCreateChannel(addr); - if (channel != null && channel.isActive()) { - try { - this.invokeOnewayImpl(channel, request, timeoutMillis); - } - catch (RemotingSendRequestException e) { - log.warn("invokeOneway: send request exception, so close the channel[{}]", addr); - this.closeChannel(addr, channel); - throw e; - } - } - else { - this.closeChannel(addr, channel); - throw new RemotingConnectException(addr); - } - } - - - @Override - public Executor getCallbackExecutor() { - return this.publicExecutor; - } - - - @Override - public void updateNameServerAddressList(List addrs) { - List old = this.namesrvAddrList.get(); - // 相等情况下,不需要更新 - if (!addrs.isEmpty() && old != null) { - if (old.size() == addrs.size()) { - boolean equal = true; - for (int i = 0; i < addrs.size(); i++) { - if (!old.get(i).equals(addrs.get(i))) { - equal = false; - break; - } - } - - if (equal) - return; - } - } - - this.namesrvAddrList.set(addrs); - } - - - @Override - public ChannelEventListener getChannelEventListener() { - return channelEventListener; - } -} +/** + * $Id: NettyRemotingClient.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + */ +package com.alibaba.rocketmq.remoting.netty; + +import io.netty.bootstrap.Bootstrap; +import io.netty.channel.Channel; +import io.netty.channel.ChannelDuplexHandler; +import io.netty.channel.ChannelFuture; +import io.netty.channel.ChannelFutureListener; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelInboundMessageHandlerAdapter; +import io.netty.channel.ChannelInitializer; +import io.netty.channel.ChannelOption; +import io.netty.channel.ChannelPromise; +import io.netty.channel.EventLoopGroup; +import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.channel.socket.SocketChannel; +import io.netty.channel.socket.nio.NioSocketChannel; +import io.netty.util.concurrent.DefaultEventExecutorGroup; + +import java.net.SocketAddress; +import java.util.List; +import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.alibaba.rocketmq.remoting.ChannelEventListener; +import com.alibaba.rocketmq.remoting.InvokeCallback; +import com.alibaba.rocketmq.remoting.RemotingClient; +import com.alibaba.rocketmq.remoting.common.Pair; +import com.alibaba.rocketmq.remoting.common.RemotingHelper; +import com.alibaba.rocketmq.remoting.exception.RemotingConnectException; +import com.alibaba.rocketmq.remoting.exception.RemotingSendRequestException; +import com.alibaba.rocketmq.remoting.exception.RemotingTimeoutException; +import com.alibaba.rocketmq.remoting.exception.RemotingTooMuchRequestException; +import com.alibaba.rocketmq.remoting.protocol.RemotingCommand; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * + */ +public class NettyRemotingClient extends NettyRemotingAbstract implements RemotingClient { + private static final Logger log = LoggerFactory.getLogger(RemotingHelper.RemotingLogName); + + private static final long LockTimeoutMillis = 3000; + + private final NettyClientConfig nettyClientConfig; + private final Bootstrap bootstrap = new Bootstrap(); + private final EventLoopGroup eventLoopGroup; + + private final Lock lockChannelTables = new ReentrantLock(); + private final ConcurrentHashMap channelTables = + new ConcurrentHashMap(); + + // 定时器 + private final Timer timer = new Timer("ClientHouseKeepingService", true); + + // Name server相关 + private final AtomicReference> namesrvAddrList = new AtomicReference>(); + private final AtomicReference namesrvAddrChoosed = new AtomicReference(); + private final AtomicInteger namesrvIndex = new AtomicInteger(initValueIndex()); + private final Lock lockNamesrvChannel = new ReentrantLock(); + + // 处理Callback应答器 + private final ExecutorService publicExecutor; + + private final ChannelEventListener channelEventListener; + + class ChannelWrapper { + private final Channel channel; + private volatile long lastActiveTimestamp = System.currentTimeMillis(); + + + public ChannelWrapper(Channel channel) { + this.channel = channel; + } + + + public long getLastActiveTimestamp() { + return lastActiveTimestamp; + } + + + public void setLastActiveTimestamp(long lastActiveTimestamp) { + this.lastActiveTimestamp = lastActiveTimestamp; + } + + + public Channel getChannel() { + return channel; + } + } + + class NettyClientHandler extends ChannelInboundMessageHandlerAdapter { + + @Override + public void messageReceived(ChannelHandlerContext ctx, Object msg) throws Exception { + processMessageReceived(ctx, msg); + } + } + + class NettyConnetManageHandler extends ChannelDuplexHandler { + @Override + public void connect(ChannelHandlerContext ctx, SocketAddress remoteAddress, SocketAddress localAddress, + ChannelPromise promise) throws Exception { + final String local = localAddress == null ? "UNKNOW" : localAddress.toString(); + final String remote = remoteAddress == null ? "UNKNOW" : remoteAddress.toString(); + log.info("NETTY CLIENT PIPELINE: CONNECT {} => {}", local, remote); + super.connect(ctx, remoteAddress, localAddress, promise); + + if (NettyRemotingClient.this.channelEventListener != null) { + NettyRemotingClient.this.putNettyEvent(new NettyEvent(NettyEventType.CONNECT, remoteAddress + .toString(), ctx.channel())); + } + } + + + @Override + public void disconnect(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception { + final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); + log.info("NETTY CLIENT PIPELINE: DISCONNECT {}", remoteAddress); + closeChannel(ctx.channel()); + super.disconnect(ctx, promise); + + if (NettyRemotingClient.this.channelEventListener != null) { + NettyRemotingClient.this.putNettyEvent(new NettyEvent(NettyEventType.CLOSE, remoteAddress + .toString(), ctx.channel())); + } + } + + + @Override + public void close(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception { + final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); + log.info("NETTY CLIENT PIPELINE: CLOSE {}", remoteAddress); + closeChannel(ctx.channel()); + super.close(ctx, promise); + + if (NettyRemotingClient.this.channelEventListener != null) { + NettyRemotingClient.this.putNettyEvent(new NettyEvent(NettyEventType.CLOSE, remoteAddress + .toString(), ctx.channel())); + } + } + + + @Override + public void flush(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception { + ctx.flush(promise); + } + + + @Override + public void inboundBufferUpdated(ChannelHandlerContext ctx) throws Exception { + ctx.fireInboundBufferUpdated(); + } + + + @Override + public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { + final String remoteAddress = RemotingHelper.parseChannelRemoteAddr(ctx.channel()); + log.warn("NETTY CLIENT PIPELINE: exceptionCaught {}", remoteAddress); + log.warn("NETTY CLIENT PIPELINE: exceptionCaught exception.", cause); + closeChannel(ctx.channel()); + if (NettyRemotingClient.this.channelEventListener != null) { + NettyRemotingClient.this.putNettyEvent(new NettyEvent(NettyEventType.EXCEPTION, remoteAddress + .toString(), ctx.channel())); + } + } + } + + + private static int initValueIndex() { + Random r = new Random(); + + return Math.abs(r.nextInt()) % 999; + } + + + public NettyRemotingClient(final NettyClientConfig nettyClientConfig) { + this(nettyClientConfig, null); + } + + + public NettyRemotingClient(final NettyClientConfig nettyClientConfig, + final ChannelEventListener channelEventListener) { + super(nettyClientConfig.getClientOnewaySemaphoreValue(), nettyClientConfig.getClientAsyncSemaphoreValue()); + this.nettyClientConfig = nettyClientConfig; + this.channelEventListener = channelEventListener; + + int publicThreadNums = nettyClientConfig.getClientCallbackExecutorThreads(); + if (publicThreadNums <= 0) { + publicThreadNums = 4; + } + + this.publicExecutor = Executors.newFixedThreadPool(publicThreadNums, new ThreadFactory() { + private AtomicInteger threadIndex = new AtomicInteger(0); + + + @Override + public Thread newThread(Runnable r) { + return new Thread(r, "NettyClientPublicExecutor_" + this.threadIndex.incrementAndGet()); + } + }); + + this.eventLoopGroup = new NioEventLoopGroup(nettyClientConfig.getClientSelectorThreads()); + } + + + private void scanNotActiveChannel() throws InterruptedException { + // 加锁,尝试扫描过期连接 + if (this.lockChannelTables.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { + try { + for (String addr : this.channelTables.keySet()) { + ChannelWrapper cw = this.channelTables.get(addr); + if (cw != null) { + long diff = System.currentTimeMillis() - cw.getLastActiveTimestamp(); + if (diff > this.nettyClientConfig.getChannelNotActiveInterval()) { + log.warn("the channel[{}] not active for a while[{}ms], close it forcibly", addr, diff); + this.closeChannel(addr, cw.getChannel()); + } + } + } + } + catch (Exception e) { + log.error("scanNotActiveChannel: close channel exception", e); + } + finally { + this.lockChannelTables.unlock(); + } + } + else { + log.warn("scanNotActiveChannel: try to lock channel table, but timeout, {}ms", LockTimeoutMillis); + } + } + + + @Override + public void start() { + this.bootstrap.group(this.eventLoopGroup).channel(NioSocketChannel.class) + .option(ChannelOption.TCP_NODELAY, true).handler(new ChannelInitializer() { + @Override + public void initChannel(SocketChannel ch) throws Exception { + ch.pipeline().addLast(// + new DefaultEventExecutorGroup(nettyClientConfig.getClientWorkerThreads()), // + new NettyEncoder(), // + new NettyDecoder(), // + new NettyConnetManageHandler(), new NettyClientHandler()); + } + }); + + // 每隔1秒扫描下异步调用超时情况 + this.timer.scheduleAtFixedRate(new TimerTask() { + + @Override + public void run() { + try { + NettyRemotingClient.this.scanResponseTable(); + } + catch (Exception e) { + log.error("scanResponseTable exception", e); + } + } + }, 1000 * 3, 1000); + + // 每隔10秒扫描下不活动的连接 + this.timer.scheduleAtFixedRate(new TimerTask() { + + @Override + public void run() { + try { + NettyRemotingClient.this.scanNotActiveChannel(); + } + catch (Exception e) { + log.error("scanNotActiveChannel exception", e); + } + } + }, 1000 * 10, 1000 * 10); + + if (this.channelEventListener != null) { + this.nettyEventExecuter.start(); + } + } + + + @Override + public void shutdown() { + try { + this.timer.cancel(); + + for (ChannelWrapper cw : this.channelTables.values()) { + this.closeChannel(null, cw.getChannel()); + } + + this.channelTables.clear(); + + this.eventLoopGroup.shutdownGracefully(); + + if (this.nettyEventExecuter != null) { + this.nettyEventExecuter.shutdown(); + } + } + catch (Exception e) { + log.error("NettyRemotingClient shutdown exception, ", e); + } + + if (this.publicExecutor != null) { + try { + this.publicExecutor.shutdown(); + } + catch (Exception e) { + log.error("NettyRemotingServer shutdown exception, ", e); + } + } + } + + + private Channel getAndCreateChannel(final String addr) throws InterruptedException { + if (null == addr) + return getAndCreateNameserverChannel(); + + ChannelWrapper cw = this.channelTables.get(addr); + if (cw != null) { + cw.setLastActiveTimestamp(System.currentTimeMillis()); + return cw.getChannel(); + } + + return this.createChannel(addr); + } + + + private Channel getAndCreateNameserverChannel() throws InterruptedException { + String addr = this.namesrvAddrChoosed.get(); + if (addr != null) { + ChannelWrapper cw = this.channelTables.get(addr); + if (cw != null) { + cw.setLastActiveTimestamp(System.currentTimeMillis()); + return cw.getChannel(); + } + } + + final List addrList = this.namesrvAddrList.get(); + // 加锁,尝试创建连接 + if (this.lockNamesrvChannel.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { + try { + addr = this.namesrvAddrChoosed.get(); + if (addr != null) { + ChannelWrapper cw = this.channelTables.get(addr); + if (cw != null) { + cw.setLastActiveTimestamp(System.currentTimeMillis()); + return cw.getChannel(); + } + } + + if (addrList != null && !addrList.isEmpty()) { + for (int i = 0; i < addrList.size(); i++) { + int index = this.namesrvIndex.incrementAndGet(); + index = Math.abs(index); + index = index % addrList.size(); + String newAddr = addrList.get(index); + + this.namesrvAddrChoosed.set(newAddr); + Channel channelNew = this.createChannel(newAddr); + if (channelNew != null) + return channelNew; + } + } + } + catch (Exception e) { + log.error("getAndCreateNameserverChannel: create name server channel exception", e); + } + finally { + this.lockNamesrvChannel.unlock(); + } + } + else { + log.warn("getAndCreateNameserverChannel: try to lock name server, but timeout, {}ms", + LockTimeoutMillis); + } + + return null; + } + + + private Channel createChannel(final String addr) throws InterruptedException { + // 加锁,尝试创建连接 + if (this.lockChannelTables.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { + try { + ChannelWrapper cw = this.channelTables.get(addr); + if (cw != null) { + cw.setLastActiveTimestamp(System.currentTimeMillis()); + return cw.getChannel(); + } + + ChannelFuture channelFuture = this.bootstrap.connect(RemotingHelper.string2SocketAddress(addr)); + Channel channel = null; + if (channelFuture.awaitUninterruptibly(this.nettyClientConfig.getConnectTimeoutMillis())) { + channel = channelFuture.channel(); + if (!channel.isActive()) { + log.warn("connect {} in {}ms ok, but channel not active", addr, + this.nettyClientConfig.getConnectTimeoutMillis()); + channel.close().sync(); + return null; + } + } + else { + log.error("connect {} in {}ms timeout", addr, this.nettyClientConfig.getConnectTimeoutMillis()); channel.close().sync(); + channel.close().sync(); + return null; + } + + log.info("connect {} success, and add to the channel table", addr); + this.channelTables.put(addr, new ChannelWrapper(channel)); + return channel; + } + catch (Exception e) { + log.error("createChannel: create channel exception", e); + } + finally { + this.lockChannelTables.unlock(); + } + } + else { + log.warn("createChannel: try to lock channel table, but timeout, {}ms", LockTimeoutMillis); + } + + return null; + } + + + public void closeChannel(final String addr, final Channel channel) { + if (null == channel) + return; + + final String addrRemote = null == addr ? RemotingHelper.parseChannelRemoteAddr(channel) : addr; + + try { + if (this.lockChannelTables.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { + try { + boolean removeItemFromTable = true; + final ChannelWrapper prevCW = this.channelTables.get(addrRemote); + + log.info("closeChannel: begin close the channel[{}] Found: {}", addrRemote, (prevCW != null)); + + if (null == prevCW) { + log.info("closeChannel: the channel[{}] has been removed from the channel table before", + addrRemote); + removeItemFromTable = false; + } + else if (prevCW.getChannel() != channel) { + log.info( + "closeChannel: the channel[{}] has been closed before, and has been created again, nothing to do.", + addrRemote); + removeItemFromTable = false; + } + + if (removeItemFromTable) { + this.channelTables.remove(addrRemote); + log.info("closeChannel: the channel[{}] was removed from channel table", addrRemote); + } + + channel.close().addListener(new ChannelFutureListener() { + @Override + public void operationComplete(ChannelFuture future) throws Exception { + log.info("closeChannel: close the connection to remote address[{}] result: {}", + addrRemote, future.isSuccess()); + } + }); + } + catch (Exception e) { + log.error("closeChannel: close the channel exception", e); + } + finally { + this.lockChannelTables.unlock(); + } + } + else { + log.warn("closeChannel: try to lock channel table, but timeout, {}ms", LockTimeoutMillis); + } + } + catch (InterruptedException e) { + log.error("closeChannel exception", e); + } + } + + + public void closeChannel(final Channel channel) { + if (null == channel) + return; + + try { + if (this.lockChannelTables.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { + try { + boolean removeItemFromTable = true; + ChannelWrapper prevCW = null; + String addrRemote = null; + for (String key : channelTables.keySet()) { + ChannelWrapper prev = this.channelTables.get(key); + if (prev.channel.equals(channel)) { + prevCW = prev; + addrRemote = key; + break; + } + } + + if (null == prevCW) { + log.info( + "eventCloseChannel: the channel[{}] has been removed from the channel table before", + addrRemote); + removeItemFromTable = false; + } + + if (removeItemFromTable) { + this.channelTables.remove(addrRemote); + log.info("closeChannel: the channel[{}] was removed from channel table", addrRemote); +// channel.close().sync(); + } + } + catch (Exception e) { + log.error("closeChannel: close the channel exception", e); + } + finally { + this.lockChannelTables.unlock(); + } + } + else { + log.warn("closeChannel: try to lock channel table, but timeout, {}ms", LockTimeoutMillis); + } + } + catch (InterruptedException e) { + log.error("closeChannel exception", e); + } + } + + + @Override + public void registerProcessor(int requestCode, NettyRequestProcessor processor, Executor executor) { + Executor executorThis = executor; + if (null == executor) { + executorThis = this.publicExecutor; + } + + Pair pair = + new Pair(processor, executorThis); + this.processorTable.put(requestCode, pair); + } + + + @Override + public RemotingCommand invokeSync(String addr, final RemotingCommand request, long timeoutMillis) + throws InterruptedException, RemotingConnectException, RemotingSendRequestException, + RemotingTimeoutException { + final Channel channel = this.getAndCreateChannel(addr); + if (channel != null && channel.isActive()) { + try { + return this.invokeSyncImpl(channel, request, timeoutMillis); + } + catch (RemotingSendRequestException e) { + log.warn("invokeSync: send request exception, so close the channel[{}]", addr); + this.closeChannel(addr, channel); + throw e; + } + catch (RemotingTimeoutException e) { + log.warn("invokeSync: wait response timeout exception, so close the channel[{}]", addr); + this.closeChannel(addr, channel); + throw e; + } + } + else { + this.closeChannel(addr, channel); + throw new RemotingConnectException(addr); + } + } + + + @Override + public void invokeAsync(String addr, RemotingCommand request, long timeoutMillis, InvokeCallback invokeCallback) + throws InterruptedException, RemotingConnectException, RemotingTooMuchRequestException, + RemotingTimeoutException, RemotingSendRequestException { + final Channel channel = this.getAndCreateChannel(addr); + if (channel != null && channel.isActive()) { + try { + this.invokeAsyncImpl(channel, request, timeoutMillis, invokeCallback); + } + catch (RemotingSendRequestException e) { + log.warn("invokeAsync: send request exception, so close the channel[{}]", addr); + this.closeChannel(addr, channel); + throw e; + } + } + else { + this.closeChannel(addr, channel); + throw new RemotingConnectException(addr); + } + } + + + @Override + public void invokeOneway(String addr, RemotingCommand request, long timeoutMillis) + throws InterruptedException, RemotingConnectException, RemotingTooMuchRequestException, + RemotingTimeoutException, RemotingSendRequestException { + final Channel channel = this.getAndCreateChannel(addr); + if (channel != null && channel.isActive()) { + try { + this.invokeOnewayImpl(channel, request, timeoutMillis); + } + catch (RemotingSendRequestException e) { + log.warn("invokeOneway: send request exception, so close the channel[{}]", addr); + this.closeChannel(addr, channel); + throw e; + } + } + else { + this.closeChannel(addr, channel); + throw new RemotingConnectException(addr); + } + } + + + @Override + public Executor getCallbackExecutor() { + return this.publicExecutor; + } + + + @Override + public void updateNameServerAddressList(List addrs) { + List old = this.namesrvAddrList.get(); + // 相等情况下,不需要更新 + if (!addrs.isEmpty() && old != null) { + if (old.size() == addrs.size()) { + boolean equal = true; + for (int i = 0; i < addrs.size(); i++) { + if (!old.get(i).equals(addrs.get(i))) { + equal = false; + break; + } + } + + if (equal) + return; + } + } + + this.namesrvAddrList.set(addrs); + } + + + @Override + public ChannelEventListener getChannelEventListener() { + return channelEventListener; + } +} From 093cb776ae1c773f1fbe7a4fb5f908b916831726 Mon Sep 17 00:00:00 2001 From: "jin.qian" Date: Fri, 24 May 2013 16:00:23 +0800 Subject: [PATCH 054/894] =?UTF-8?q?fixed=20#31=E5=A2=9E=E5=8A=A0=E4=BA=86c?= =?UTF-8?q?hannel=E7=9A=84close=20=E6=96=B9=E6=B3=95=EF=BC=8C=E7=9C=8B?= =?UTF-8?q?=E7=9C=8B=E6=98=AF=E5=90=A6=E6=9C=89=E6=95=88=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/rocketmq/remoting/netty/NettyRemotingClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java index 41d66ba4..4affc23e 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java @@ -418,7 +418,7 @@ private Channel createChannel(final String addr) throws InterruptedException { } } else { - log.error("connect {} in {}ms timeout", addr, this.nettyClientConfig.getConnectTimeoutMillis()); channel.close().sync(); + log.error("connect {} in {}ms timeout", addr, this.nettyClientConfig.getConnectTimeoutMillis()); channel.close().sync(); return null; } From 1ee6d7081d07d41f9efdb2fc1697dc8ecf7babfd Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Fri, 24 May 2013 20:31:32 +0800 Subject: [PATCH 055/894] =?UTF-8?q?fixed=20#37=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=EF=BC=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0pom=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/log4j_broker.xml | 6 +- conf/log4j_namesrv.xml | 4 +- conf/log4j_tools.xml | 67 ++++++++++++------- pom.xml | 6 ++ .../client/impl/ClientRemotingProcessor.java | 1 + .../header/EndTransactionRequestHeader.java | 16 ++++- .../java/com/alibaba/rocketmq/example/README | 1 + 7 files changed, 70 insertions(+), 31 deletions(-) create mode 100644 rocketmq-example/src/main/java/com/alibaba/rocketmq/example/README diff --git a/conf/log4j_broker.xml b/conf/log4j_broker.xml index 663a7219..9df01429 100644 --- a/conf/log4j_broker.xml +++ b/conf/log4j_broker.xml @@ -6,7 +6,7 @@ ${user.home}/rocketmqlogs/otherdays/rocketmq_default-%d{yyyy-MM-dd}.%i.log - 33554432 + 104857600 @@ -21,7 +21,7 @@ ${user.home}/rocketmqlogs/otherdays/rocketmq_broker-%d{yyyy-MM-dd}.%i.log - 33554432 + 104857600 @@ -35,7 +35,7 @@ ${user.home}/rocketmqlogs/otherdays/rocketmq_transaction-%d{yyyy-MM-dd}.%i.log - 1073741824 + 104857600 diff --git a/conf/log4j_namesrv.xml b/conf/log4j_namesrv.xml index cec3941c..574a8e3d 100644 --- a/conf/log4j_namesrv.xml +++ b/conf/log4j_namesrv.xml @@ -6,7 +6,7 @@ rocketmq_default-%d{yyyy-MM-dd}.%i.log - 33554432 + 104857600 @@ -21,7 +21,7 @@ rocketmq_namesrv-%d{yyyy-MM-dd}.%i.log - 33554432 + 104857600 diff --git a/conf/log4j_tools.xml b/conf/log4j_tools.xml index 129e3e79..07f945fa 100644 --- a/conf/log4j_tools.xml +++ b/conf/log4j_tools.xml @@ -1,45 +1,62 @@ - - - - - - - - - - - + + + ${user.home}/rocketmqlogs/rocketmq_default.log + true + + ${user.home}/rocketmqlogs/otherdays/rocketmq_default-%d{yyyy-MM-dd}.%i.log + + 104857600 + + + + %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n + UTF-8 + - - - - - - - - - + + ${user.home}/rocketmqlogs/rocketmq_tools.log + true + + ${user.home}/rocketmqlogs/otherdays/rocketmq_tools-%d{yyyy-MM-dd}.%i.log + + 104857600 + + + + %d{yyy-MM-dd HH:mm:ss,GMT+8} %p %t - %m%n + UTF-8 + + + + true + + %d{yyy-MM-dd HH\:mm\:ss,GMT+8} %p %t - %m%n + UTF-8 + - - - + + + + + + - + - + diff --git a/pom.xml b/pom.xml index d3dd5b71..dedfe1c0 100644 --- a/pom.xml +++ b/pom.xml @@ -225,6 +225,12 @@ gson 2.2.4 + + com.alibaba.platform.shared + fastjson + 1.1.9 + + \ No newline at end of file diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java index 36a5164d..adb1d458 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java @@ -64,6 +64,7 @@ private void processTransactionState(// thisHeader.setCommitLogOffset(requestHeader.getCommitLogOffset()); thisHeader.setProducerGroup(producerGroup); thisHeader.setTranStateTableOffset(requestHeader.getTranStateTableOffset()); + thisHeader.setFromTransactionCheck(true); switch (localTransactionState) { case COMMIT_MESSAGE: thisHeader.setCommitOrRollback(MessageSysFlag.TransactionCommitType); diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java index d8689a49..ef2cf1d6 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java @@ -6,6 +6,7 @@ import com.alibaba.rocketmq.common.sysflag.MessageSysFlag; import com.alibaba.rocketmq.remoting.CommandCustomHeader; import com.alibaba.rocketmq.remoting.annotation.CFNotNull; +import com.alibaba.rocketmq.remoting.annotation.CFNullable; import com.alibaba.rocketmq.remoting.exception.RemotingCommandException; @@ -24,6 +25,9 @@ public class EndTransactionRequestHeader implements CommandCustomHeader { private Integer commitOrRollback; // TransactionCommitType // TransactionRollbackType + @CFNullable + private Boolean fromTransactionCheck = false; + @Override public void checkFields() throws RemotingCommandException { @@ -83,10 +87,20 @@ public void setCommitOrRollback(Integer commitOrRollback) { } + public Boolean getFromTransactionCheck() { + return fromTransactionCheck; + } + + + public void setFromTransactionCheck(Boolean fromTransactionCheck) { + this.fromTransactionCheck = fromTransactionCheck; + } + + @Override public String toString() { return "EndTransactionRequestHeader [producerGroup=" + producerGroup + ", tranStateTableOffset=" + tranStateTableOffset + ", commitLogOffset=" + commitLogOffset + ", commitOrRollback=" - + commitOrRollback + "]"; + + commitOrRollback + ", fromTransactionCheck=" + fromTransactionCheck + "]"; } } diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/README b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/README new file mode 100644 index 00000000..63fbd716 --- /dev/null +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/README @@ -0,0 +1 @@ +### RocketMQ各种用法 \ No newline at end of file From e475ddbbc57c8e6c22cc8f6e98a8c8980e8f6af4 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Fri, 24 May 2013 20:49:19 +0800 Subject: [PATCH 056/894] =?UTF-8?q?#42=20=E4=B8=BA=E6=AF=8F=E6=AC=A1?= =?UTF-8?q?=E6=89=AB=E6=8F=8FTransaction=20State=20Table=E6=89=93=E5=8D=B0?= =?UTF-8?q?=E6=B1=87=E6=80=BB=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/alibaba/rocketmq/research/Test.java | 14 ++++++++++++ .../transaction/TransactionStateService.java | 22 ++++++++++++++----- 2 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 rocketmq-research/src/main/java/com/alibaba/rocketmq/research/Test.java diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/Test.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/Test.java new file mode 100644 index 00000000..4917d661 --- /dev/null +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/Test.java @@ -0,0 +1,14 @@ +package com.alibaba.rocketmq.research; + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class Test { + + public static void main(String[] args) { + byte[] abc = "abc".getBytes(); + + Object obj = abc; + System.out.println(obj); + } +} diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java index 84d8ed14..1297b460 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java @@ -251,8 +251,9 @@ private void addTimerTask(final MapedFile mf) { private long getTranStateOffset(final long currentIndex) { - long offset = this.mapedFile.getFileFromOffset() / TransactionStateService.TSStoreUnitSize; - offset += currentIndex; + long offset = + (this.mapedFile.getFileFromOffset() + currentIndex) + / TransactionStateService.TSStoreUnitSize; return offset; } @@ -260,12 +261,12 @@ private long getTranStateOffset(final long currentIndex) { @Override public void run() { try { - long preparedMessageCountInThisMapedFile = 0; - SelectMapedBufferResult selectMapedBufferResult = mapedFile.selectMapedBuffer(0); if (selectMapedBufferResult != null) { + long preparedMessageCountInThisMapedFile = 0; + int i = 0; try { - int i = 0; + for (; i < selectMapedBufferResult.getSize(); i += TSStoreUnitSize) { selectMapedBufferResult.getByteBuffer().position(i); @@ -319,9 +320,18 @@ public void run() { finally { selectMapedBufferResult.release(); } + + tranlog + .info( + "the transaction timer task execute over, {} Prepared Message: {} Check Progress: {}/{}", + mapedFile.getFileName(),// + preparedMessageCountInThisMapedFile,// + i / TSStoreUnitSize,// + mapedFile.getFileSize() / TSStoreUnitSize// + ); } else if (mapedFile.isFull()) { - tranlog.info("the mapedfile[{}] maybe removed, cancel check transaction timer task", + tranlog.info("the mapedfile[{}] maybe deleted, cancel check transaction timer task", mapedFile.getFileName()); this.cancel(); return; From 0a7008db8ac6519c936013f49bb14cfad85ba2fd Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Fri, 24 May 2013 21:39:46 +0800 Subject: [PATCH 057/894] =?UTF-8?q?fixed=20#32=20=E5=B0=86gson=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8C=96=E6=94=B9=E4=B8=BAfastjson=20@wenshao=20@zhon?= =?UTF-8?q?gl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 --- rocketmq-remoting/pom.xml | 4 +-- .../protocol/RemotingSerializable.java | 13 +++---- rocketmq-research/pom.xml | 5 +-- .../rocketmq/research/gson/Contact.java | 11 +++--- .../rocketmq/research/gson/ContactBook.java | 5 --- .../rocketmq/research/gson/Convert.java | 26 +++++++------- .../rocketmq/research/gson/TestConvert.java | 12 +++---- .../rocketmq/research/gson/TestFastjson.java | 34 +++++++++++++++++++ .../rocketmq/research/gson/TestGson.java | 26 +++++++------- 10 files changed, 77 insertions(+), 64 deletions(-) create mode 100644 rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestFastjson.java diff --git a/pom.xml b/pom.xml index dedfe1c0..231aa379 100644 --- a/pom.xml +++ b/pom.xml @@ -220,11 +220,6 @@ jar compile - - com.google.code.gson - gson - 2.2.4 - com.alibaba.platform.shared fastjson diff --git a/rocketmq-remoting/pom.xml b/rocketmq-remoting/pom.xml index 952aca8e..f967a38d 100644 --- a/rocketmq-remoting/pom.xml +++ b/rocketmq-remoting/pom.xml @@ -28,8 +28,8 @@ protobuf-java - com.google.code.gson - gson + com.alibaba.platform.shared + fastjson io.netty diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java index 10bc2566..b0a23e8c 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java @@ -1,7 +1,6 @@ package com.alibaba.rocketmq.remoting.protocol; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; +import com.alibaba.fastjson.JSON; /** @@ -10,17 +9,13 @@ * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public abstract class RemotingSerializable { - protected final static GsonBuilder builder = new GsonBuilder(); - protected final static Gson gson = builder.create(); - - public String toJson() { - return gson.toJson(this); + return JSON.toJSONString(this); } public static T fromJson(String json, Class classOfT) { - return gson.fromJson(json, classOfT); + return JSON.parseObject(json, classOfT); } @@ -35,6 +30,6 @@ public byte[] encode() { public static T decode(final byte[] data, Class classOfT) { final String json = new String(data); - return gson.fromJson(json, classOfT); + return fromJson(json, classOfT); } } diff --git a/rocketmq-research/pom.xml b/rocketmq-research/pom.xml index c4055586..47e2f69d 100644 --- a/rocketmq-research/pom.xml +++ b/rocketmq-research/pom.xml @@ -34,9 +34,10 @@ ch.qos.logback logback-classic + - com.google.code.gson - gson + com.alibaba.platform.shared + fastjson diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java index b15d6b0b..6ab8b43d 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java @@ -1,18 +1,13 @@ package com.alibaba.rocketmq.research.gson; -import com.google.gson.annotations.Expose; -public class Contact { +public class Contact { public final static String SUB_ALL = "*"; - @Expose private String name; - @Expose private int age; - @Expose private double weight; private String school; - @Expose private SexType sex; @@ -66,6 +61,10 @@ public void setSex(SexType sex) { } + public Contact() { + } + + public Contact(String name, int age, double weight, String school, SexType sex) { super(); this.name = name; diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/ContactBook.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/ContactBook.java index c0bf0462..e2f17cae 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/ContactBook.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/ContactBook.java @@ -5,15 +5,10 @@ import java.util.List; import java.util.Map; -import com.google.gson.annotations.Expose; - public class ContactBook extends Convert { - @Expose private String name; - @Expose private List contactList = new ArrayList(); - @Expose private Map customField = new HashMap(); private int code; diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java index 1c0cc2c4..978d47f5 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java @@ -3,24 +3,22 @@ */ package com.alibaba.rocketmq.research.gson; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; /** * @author vintage.wang@gmail.com shijia.wxr@taobao.com */ public abstract class Convert { - public String encode() { - GsonBuilder builder = new GsonBuilder(); - Gson gson = builder.create(); - return gson.toJson(this); - } - - - public static T decode(String json, Class classOfT) { - GsonBuilder builder = new GsonBuilder(); - Gson gson = builder.create(); - return gson.fromJson(json, classOfT); - } +// public String encode() { +// GsonBuilder builder = new GsonBuilder(); +// Gson gson = builder.create(); +// return gson.toJson(this); +// } +// +// +// public static T decode(String json, Class classOfT) { +// GsonBuilder builder = new GsonBuilder(); +// Gson gson = builder.create(); +// return gson.fromJson(json, classOfT); +// } } diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java index 91825192..bce3d22a 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java @@ -3,8 +3,6 @@ */ package com.alibaba.rocketmq.research.gson; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; /** @@ -26,10 +24,10 @@ public static void main(String[] args) { contactBook.getContactList().add(new Contact("张惠妹", 41, 52.69, "研究生", SexType.GIRL)); contactBook.getContactList().add(new Contact("周星驰", 54, 61.22, "博士", SexType.BOY)); - String json = contactBook.encode(); - System.out.println(json); - - ContactBook d = ContactBook.decode(json, ContactBook.class); - System.out.println(d); +// String json = contactBook.encode(); +// System.out.println(json); +// +// ContactBook d = ContactBook.decode(json, ContactBook.class); +// System.out.println(d); } } diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestFastjson.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestFastjson.java new file mode 100644 index 00000000..8ea46c63 --- /dev/null +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestFastjson.java @@ -0,0 +1,34 @@ +package com.alibaba.rocketmq.research.gson; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; + + +/** + * @author vintage.wang@gmail.com shijia.wxr@taobao.com + */ +public class TestFastjson { + + public static void main(String[] args) { + ContactBook contactBook = new ContactBook(); + + contactBook.setName("张三的通信录"); + contactBook.setCode(100); + + contactBook.getCustomField().put("CustomKey1", "CustomValue1"); + contactBook.getCustomField().put("CustomKey2", "CustomValue2"); + contactBook.getCustomField().put("CustomKey3", "CustomValue3"); + + contactBook.getContactList().add(new Contact("刘德华", 54, 60.56, "本科\"", SexType.BOY)); + contactBook.getContactList().add(new Contact("张惠妹", 41, 52.69, "研究生", SexType.GIRL)); + contactBook.getContactList().add(new Contact("周星驰", 54, 61.22, "博士", SexType.BOY)); + + String json = JSON.toJSONString(contactBook, SerializerFeature.WriteClassName); + System.out.println(json); + + // ContactBook fan = (ContactBook) JSON.parse(json); + + ContactBook fan = JSON.parseObject(json, ContactBook.class); + System.out.println(fan); + } +} diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java index dff529cd..372a6bf4 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java @@ -1,7 +1,5 @@ package com.alibaba.rocketmq.research.gson; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; /** @@ -23,18 +21,18 @@ public static void main(String[] args) { contactBook.getContactList().add(new Contact("张惠妹", 41, 52.69, "研究生", SexType.GIRL)); contactBook.getContactList().add(new Contact("周星驰", 54, 61.22, "博士", SexType.BOY)); - GsonBuilder builder = new GsonBuilder(); - // builder.excludeFieldsWithoutExposeAnnotation(); - - Gson gson = builder.create(); - - String json = gson.toJson(contactBook); - System.out.println(json); - - ContactBook cb = gson.fromJson(json, ContactBook.class); - System.out.println(cb); - String json2 = gson.toJson(cb); - System.out.println(json2); + // GsonBuilder builder = new GsonBuilder(); + // // builder.excludeFieldsWithoutExposeAnnotation(); + // + // Gson gson = builder.create(); + // + // String json = gson.toJson(contactBook); + // System.out.println(json); + // + // ContactBook cb = gson.fromJson(json, ContactBook.class); + // System.out.println(cb); + // String json2 = gson.toJson(cb); + // System.out.println(json2); } } From 8f27024daf1fb0a7a05c5f12a6763aa64b5b0189 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sat, 25 May 2013 12:50:14 +0800 Subject: [PATCH 058/894] =?UTF-8?q?#4=20=E6=9B=B4=E6=96=B0=E4=BD=9C?= =?UTF-8?q?=E8=80=85=E4=BF=A1=E6=81=AF=EF=BC=8C=E5=90=8D=E5=AD=97+?= =?UTF-8?q?=E9=82=AE=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/alibaba/rocketmq/broker/BrokerController.java | 2 +- .../java/com/alibaba/rocketmq/broker/BrokerStartup.java | 2 +- .../alibaba/rocketmq/broker/client/ClientChannelInfo.java | 2 +- .../rocketmq/broker/client/ClientHousekeepingService.java | 2 +- .../alibaba/rocketmq/broker/client/ConsumerGroupInfo.java | 2 +- .../com/alibaba/rocketmq/broker/client/ConsumerManager.java | 2 +- .../com/alibaba/rocketmq/broker/client/ProducerManager.java | 2 +- .../rocketmq/broker/longpolling/ManyPullRequest.java | 2 +- .../alibaba/rocketmq/broker/longpolling/PullRequest.java | 2 +- .../rocketmq/broker/longpolling/PullRequestHoldService.java | 2 +- .../rocketmq/broker/offset/ConsumerOffsetManager.java | 2 +- .../rocketmq/broker/pagecache/ManyMessageTransfer.java | 2 +- .../rocketmq/broker/pagecache/OneMessageTransfer.java | 2 +- .../rocketmq/broker/pagecache/QueryMessageTransfer.java | 2 +- .../rocketmq/broker/processor/AdminBrokerProcessor.java | 2 +- .../rocketmq/broker/processor/ClientManageProcessor.java | 2 +- .../rocketmq/broker/processor/EndTransactionProcessor.java | 2 +- .../rocketmq/broker/processor/ForwardRequestProcessor.java | 2 +- .../rocketmq/broker/processor/PullMessageProcessor.java | 2 +- .../rocketmq/broker/processor/QueryMessageProcessor.java | 2 +- .../rocketmq/broker/processor/SendMessageProcessor.java | 2 +- .../alibaba/rocketmq/broker/topic/TopicConfigManager.java | 2 +- .../broker/transaction/DefaultTransactionCheckExecuter.java | 2 +- .../com/alibaba/rocketmq/broker/api/SendMessageTest.java | 2 +- .../rocketmq/broker/offset/ConsumerOffsetManagerTest.java | 2 +- .../rocketmq/broker/topic/TopicConfigManagerTest.java | 2 +- .../src/main/java/com/alibaba/rocketmq/client/MQAdmin.java | 2 +- .../java/com/alibaba/rocketmq/client/MQClientConfig.java | 2 +- .../main/java/com/alibaba/rocketmq/client/QueryResult.java | 2 +- .../client/consumer/AllocateMessageQueueStrategy.java | 2 +- .../rocketmq/client/consumer/ConsumeFromWhereOffset.java | 2 +- .../rocketmq/client/consumer/ConsumeFromWhichNode.java | 2 +- .../rocketmq/client/consumer/DefaultMQPullConsumer.java | 2 +- .../rocketmq/client/consumer/DefaultMQPushConsumer.java | 2 +- .../com/alibaba/rocketmq/client/consumer/MQConsumer.java | 2 +- .../alibaba/rocketmq/client/consumer/MQPullConsumer.java | 2 +- .../alibaba/rocketmq/client/consumer/MQPushConsumer.java | 2 +- .../rocketmq/client/consumer/MessageQueueListener.java | 2 +- .../com/alibaba/rocketmq/client/consumer/PullCallback.java | 2 +- .../com/alibaba/rocketmq/client/consumer/PullResult.java | 2 +- .../com/alibaba/rocketmq/client/consumer/PullStatus.java | 2 +- .../consumer/listener/ConsumeConcurrentlyContext.java | 2 +- .../client/consumer/listener/ConsumeConcurrentlyStatus.java | 2 +- .../client/consumer/listener/ConsumeOrderlyContext.java | 2 +- .../client/consumer/listener/ConsumeOrderlyStatus.java | 2 +- .../rocketmq/client/consumer/listener/MessageListener.java | 2 +- .../consumer/listener/MessageListenerConcurrently.java | 2 +- .../client/consumer/listener/MessageListenerOrderly.java | 2 +- .../consumer/loadbalance/AllocateMessageQueueAveragely.java | 2 +- .../consumer/loadbalance/AllocateMessageQueueByConfig.java | 2 +- .../loadbalance/AllocateMessageQueueByMachineRoom.java | 2 +- .../rocketmq/client/exception/MQBrokerException.java | 2 +- .../rocketmq/client/exception/MQClientException.java | 2 +- .../rocketmq/client/impl/ClientRemotingProcessor.java | 2 +- .../com/alibaba/rocketmq/client/impl/CommunicationMode.java | 2 +- .../com/alibaba/rocketmq/client/impl/FindBrokerResult.java | 2 +- .../java/com/alibaba/rocketmq/client/impl/MQAdminImpl.java | 2 +- .../com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java | 2 +- .../com/alibaba/rocketmq/client/impl/MQClientManager.java | 2 +- .../client/impl/consumer/DefaultMQPullConsumerImpl.java | 2 +- .../client/impl/consumer/DefaultMQPushConsumerImpl.java | 2 +- .../rocketmq/client/impl/consumer/MQConsumerInner.java | 2 +- .../rocketmq/client/impl/consumer/PullAPIWrapper.java | 2 +- .../rocketmq/client/impl/consumer/PullMessageService.java | 2 +- .../alibaba/rocketmq/client/impl/consumer/PullRequest.java | 2 +- .../rocketmq/client/impl/consumer/PullResultExt.java | 2 +- .../rocketmq/client/impl/factory/MQClientFactory.java | 2 +- .../client/impl/producer/DefaultMQProducerImpl.java | 2 +- .../rocketmq/client/impl/producer/MQProducerInner.java | 2 +- .../rocketmq/client/impl/producer/SendResultExt.java | 2 +- .../rocketmq/client/impl/producer/TopicPublishInfo.java | 2 +- .../alibaba/rocketmq/client/producer/DefaultMQProducer.java | 2 +- .../rocketmq/client/producer/LocalTransactionExecuter.java | 2 +- .../rocketmq/client/producer/LocalTransactionState.java | 2 +- .../com/alibaba/rocketmq/client/producer/MQProducer.java | 2 +- .../rocketmq/client/producer/MessageQueueSelector.java | 2 +- .../com/alibaba/rocketmq/client/producer/SendCallback.java | 2 +- .../com/alibaba/rocketmq/client/producer/SendResult.java | 2 +- .../com/alibaba/rocketmq/client/producer/SendStatus.java | 2 +- .../rocketmq/client/producer/TransactionCheckListener.java | 2 +- .../rocketmq/client/producer/TransactionMQProducer.java | 2 +- .../producer/selector/SelectMessageQueueByMachineRoom.java | 2 +- .../main/java/com/alibaba/rocketmq/common/BrokerConfig.java | 2 +- .../main/java/com/alibaba/rocketmq/common/DataVersion.java | 2 +- .../main/java/com/alibaba/rocketmq/common/MQVersion.java | 2 +- .../src/main/java/com/alibaba/rocketmq/common/Message.java | 2 +- .../java/com/alibaba/rocketmq/common/MessageDecoder.java | 2 +- .../main/java/com/alibaba/rocketmq/common/MessageExt.java | 2 +- .../main/java/com/alibaba/rocketmq/common/MessageId.java | 2 +- .../main/java/com/alibaba/rocketmq/common/MessageQueue.java | 2 +- .../src/main/java/com/alibaba/rocketmq/common/MixAll.java | 2 +- .../src/main/java/com/alibaba/rocketmq/common/Pair.java | 2 +- .../main/java/com/alibaba/rocketmq/common/ServiceState.java | 2 +- .../java/com/alibaba/rocketmq/common/ServiceThread.java | 2 +- .../main/java/com/alibaba/rocketmq/common/TopicConfig.java | 2 +- .../java/com/alibaba/rocketmq/common/TopicFilterType.java | 2 +- .../src/main/java/com/alibaba/rocketmq/common/UtilALl.java | 2 +- .../com/alibaba/rocketmq/common/namesrv/NamesrvConfig.java | 2 +- .../com/alibaba/rocketmq/common/namesrv/TopAddressing.java | 2 +- .../alibaba/rocketmq/common/protocol/MQProtosHelper.java | 2 +- .../protocol/header/CheckTransactionStateRequestHeader.java | 2 +- .../header/CheckTransactionStateResponseHeader.java | 2 +- .../common/protocol/header/CreateTopicRequestHeader.java | 2 +- .../common/protocol/header/DeleteTopicRequestHeader.java | 2 +- .../common/protocol/header/EndTransactionRequestHeader.java | 2 +- .../protocol/header/EndTransactionResponseHeader.java | 2 +- .../protocol/header/GetAllTopicConfigResponseHeader.java | 2 +- .../protocol/header/GetBrokerConfigResponseHeader.java | 2 +- .../header/GetEarliestMsgStoretimeRequestHeader.java | 2 +- .../header/GetEarliestMsgStoretimeResponseHeader.java | 2 +- .../common/protocol/header/GetMaxOffsetRequestHeader.java | 2 +- .../common/protocol/header/GetMaxOffsetResponseHeader.java | 2 +- .../common/protocol/header/GetMinOffsetRequestHeader.java | 2 +- .../common/protocol/header/GetMinOffsetResponseHeader.java | 2 +- .../common/protocol/header/PullMessageRequestHeader.java | 2 +- .../common/protocol/header/PullMessageResponseHeader.java | 2 +- .../protocol/header/QueryConsumerOffsetRequestHeader.java | 2 +- .../protocol/header/QueryConsumerOffsetResponseHeader.java | 2 +- .../common/protocol/header/QueryMessageRequestHeader.java | 2 +- .../common/protocol/header/QueryMessageResponseHeader.java | 2 +- .../common/protocol/header/SearchOffsetRequestHeader.java | 2 +- .../common/protocol/header/SearchOffsetResponseHeader.java | 2 +- .../common/protocol/header/SendMessageRequestHeader.java | 2 +- .../common/protocol/header/SendMessageResponseHeader.java | 2 +- .../protocol/header/UnregisterClientRequestHeader.java | 2 +- .../protocol/header/UnregisterClientResponseHeader.java | 2 +- .../protocol/header/UpdateConsumerOffsetRequestHeader.java | 2 +- .../protocol/header/UpdateConsumerOffsetResponseHeader.java | 2 +- .../common/protocol/header/ViewMessageRequestHeader.java | 2 +- .../common/protocol/header/ViewMessageResponseHeader.java | 2 +- .../protocol/header/namesrv/GetRouteInfoRequestHeader.java | 2 +- .../protocol/header/namesrv/GetRouteInfoResponseHeader.java | 2 +- .../header/namesrv/RegisterOrderTopicRequestHeader.java | 2 +- .../rocketmq/common/protocol/heartbeat/ConsumeType.java | 2 +- .../rocketmq/common/protocol/heartbeat/ConsumerData.java | 2 +- .../rocketmq/common/protocol/heartbeat/HeartbeatData.java | 2 +- .../rocketmq/common/protocol/heartbeat/MessageModel.java | 2 +- .../rocketmq/common/protocol/heartbeat/ProducerData.java | 2 +- .../common/protocol/heartbeat/SubscriptionData.java | 2 +- .../rocketmq/common/protocol/route/TopicRouteData.java | 2 +- .../com/alibaba/rocketmq/common/sysflag/MessageSysFlag.java | 2 +- .../com/alibaba/rocketmq/common/sysflag/PullSysFlag.java | 2 +- .../rocketmq/common/protocol/MQProtosHelperTest.java | 2 +- .../rocketmq/common/protocol/heartbeat/HeartbeatTest.java | 2 +- .../java/com/alibaba/rocketmq/console/ConsoleConfig.java | 2 +- .../com/alibaba/rocketmq/console/ConsoleController.java | 2 +- .../java/com/alibaba/rocketmq/console/ConsoleStartup.java | 2 +- .../alibaba/rocketmq/console/http/ConsoleJettyHander.java | 2 +- .../com/alibaba/rocketmq/example/benchmark/Consumer.java | 2 +- .../com/alibaba/rocketmq/example/benchmark/Producer.java | 2 +- .../java/com/alibaba/rocketmq/example/simple/Producer.java | 2 +- .../com/alibaba/rocketmq/example/simple/PullConsumer.java | 2 +- .../com/alibaba/rocketmq/example/simple/PushConsumer.java | 2 +- .../rocketmq/example/transaction/TransactionProducer.java | 2 +- .../com/alibaba/rocketmq/namesrv/NamesrvController.java | 2 +- .../java/com/alibaba/rocketmq/namesrv/NamesrvStartup.java | 2 +- .../rocketmq/namesrv/processor/AllRequestProcessor.java | 2 +- .../com/alibaba/rocketmq/remoting/ChannelEventListener.java | 2 +- .../com/alibaba/rocketmq/remoting/CommandCustomHeader.java | 2 +- .../java/com/alibaba/rocketmq/remoting/InvokeCallback.java | 2 +- .../java/com/alibaba/rocketmq/remoting/RemotingClient.java | 2 +- .../java/com/alibaba/rocketmq/remoting/RemotingServer.java | 2 +- .../com/alibaba/rocketmq/remoting/annotation/CFNotNull.java | 2 +- .../alibaba/rocketmq/remoting/annotation/CFNullable.java | 2 +- .../java/com/alibaba/rocketmq/remoting/common/Pair.java | 2 +- .../alibaba/rocketmq/remoting/common/RemotingHelper.java | 2 +- .../com/alibaba/rocketmq/remoting/common/RemotingUtil.java | 2 +- .../rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java | 2 +- .../com/alibaba/rocketmq/remoting/common/ServiceThread.java | 2 +- .../remoting/exception/RemotingCommandException.java | 2 +- .../remoting/exception/RemotingConnectException.java | 2 +- .../rocketmq/remoting/exception/RemotingException.java | 2 +- .../remoting/exception/RemotingSendRequestException.java | 2 +- .../remoting/exception/RemotingTimeoutException.java | 2 +- .../remoting/exception/RemotingTooMuchRequestException.java | 2 +- .../alibaba/rocketmq/remoting/netty/NettyClientConfig.java | 2 +- .../com/alibaba/rocketmq/remoting/netty/NettyDecoder.java | 2 +- .../com/alibaba/rocketmq/remoting/netty/NettyEncoder.java | 2 +- .../com/alibaba/rocketmq/remoting/netty/NettyEvent.java | 2 +- .../com/alibaba/rocketmq/remoting/netty/NettyEventType.java | 2 +- .../rocketmq/remoting/netty/NettyRemotingAbstract.java | 2 +- .../rocketmq/remoting/netty/NettyRemotingClient.java | 2 +- .../rocketmq/remoting/netty/NettyRemotingServer.java | 2 +- .../rocketmq/remoting/netty/NettyRequestProcessor.java | 2 +- .../alibaba/rocketmq/remoting/netty/NettyServerConfig.java | 2 +- .../com/alibaba/rocketmq/remoting/netty/ResponseFuture.java | 2 +- .../alibaba/rocketmq/remoting/protocol/RemotingCommand.java | 2 +- .../rocketmq/remoting/protocol/RemotingCommandType.java | 2 +- .../rocketmq/remoting/protocol/RemotingProtosHelper.java | 2 +- .../rocketmq/remoting/protocol/RemotingSerializable.java | 2 +- .../alibaba/rocketmq/protocol/RemotingProtosHelperTest.java | 2 +- .../java/com/alibaba/rocketmq/remoting/ExceptionTest.java | 2 +- .../test/java/com/alibaba/rocketmq/remoting/MixTest.java | 2 +- .../java/com/alibaba/rocketmq/remoting/NettyRPCTest.java | 2 +- .../java/com/alibaba/rocketmq/remoting/SyncInvokeTest.java | 2 +- .../com/alibaba/rocketmq/subclass/TestSubClassAuto.java | 2 +- .../src/main/java/com/alibaba/rocketmq/research/Test.java | 2 +- .../java/com/alibaba/rocketmq/research/gson/Convert.java | 2 +- .../com/alibaba/rocketmq/research/gson/TestConvert.java | 2 +- .../com/alibaba/rocketmq/research/gson/TestFastjson.java | 2 +- .../java/com/alibaba/rocketmq/research/gson/TestGson.java | 2 +- .../com/alibaba/rocketmq/research/logback/LogbackTest.java | 2 +- .../main/java/com/alibaba/rocketmq/research/mix/Test1.java | 2 +- .../java/com/alibaba/rocketmq/research/rpc/Connection.java | 2 +- .../com/alibaba/rocketmq/research/rpc/DefaultRPCClient.java | 2 +- .../com/alibaba/rocketmq/research/rpc/DefaultRPCServer.java | 2 +- .../alibaba/rocketmq/research/rpc/LinkedByteBufferList.java | 2 +- .../java/com/alibaba/rocketmq/research/rpc/RPCClient.java | 2 +- .../com/alibaba/rocketmq/research/rpc/benchmark/Client.java | 2 +- .../alibaba/rocketmq/research/rpc/benchmark/MTClient.java | 2 +- .../com/alibaba/rocketmq/research/rpc/benchmark/Server.java | 2 +- .../rocketmq/research/store/MessageStoreTestObject.java | 2 +- .../com/alibaba/rocketmq/research/storeha/BrokerMaster.java | 2 +- .../com/alibaba/rocketmq/research/storeha/BrokerSlave.java | 2 +- .../alibaba/rocketmq/store/AllocateMapedFileService.java | 2 +- .../com/alibaba/rocketmq/store/AppendMessageCallback.java | 2 +- .../com/alibaba/rocketmq/store/AppendMessageResult.java | 2 +- .../com/alibaba/rocketmq/store/AppendMessageStatus.java | 2 +- .../src/main/java/com/alibaba/rocketmq/store/CommitLog.java | 2 +- .../main/java/com/alibaba/rocketmq/store/ConsumeQueue.java | 2 +- .../com/alibaba/rocketmq/store/DefaultMessageFilter.java | 2 +- .../com/alibaba/rocketmq/store/DefaultMessageStore.java | 2 +- .../java/com/alibaba/rocketmq/store/DispatchRequest.java | 2 +- .../java/com/alibaba/rocketmq/store/GetMessageResult.java | 2 +- .../java/com/alibaba/rocketmq/store/GetMessageStatus.java | 2 +- .../src/main/java/com/alibaba/rocketmq/store/MapedFile.java | 2 +- .../java/com/alibaba/rocketmq/store/MapedFileQueue.java | 2 +- .../com/alibaba/rocketmq/store/MessageExtBrokerInner.java | 2 +- .../main/java/com/alibaba/rocketmq/store/MessageFilter.java | 2 +- .../main/java/com/alibaba/rocketmq/store/MessageStore.java | 2 +- .../java/com/alibaba/rocketmq/store/PutMessageResult.java | 2 +- .../java/com/alibaba/rocketmq/store/PutMessageStatus.java | 2 +- .../java/com/alibaba/rocketmq/store/QueryMessageResult.java | 2 +- .../java/com/alibaba/rocketmq/store/ReferenceResource.java | 2 +- .../main/java/com/alibaba/rocketmq/store/RunningFlags.java | 2 +- .../com/alibaba/rocketmq/store/SelectMapedBufferResult.java | 2 +- .../java/com/alibaba/rocketmq/store/StoreCheckpoint.java | 2 +- .../java/com/alibaba/rocketmq/store/StoreStatsService.java | 2 +- .../java/com/alibaba/rocketmq/store/config/BrokerRole.java | 2 +- .../com/alibaba/rocketmq/store/config/FlushDiskType.java | 2 +- .../alibaba/rocketmq/store/config/MessageStoreConfig.java | 2 +- .../java/com/alibaba/rocketmq/store/ha/HAConnection.java | 6 +++--- .../main/java/com/alibaba/rocketmq/store/ha/HAService.java | 2 +- .../com/alibaba/rocketmq/store/ha/WaitNotifyObject.java | 2 +- .../java/com/alibaba/rocketmq/store/index/IndexFile.java | 2 +- .../java/com/alibaba/rocketmq/store/index/IndexHeader.java | 2 +- .../java/com/alibaba/rocketmq/store/index/IndexService.java | 2 +- .../com/alibaba/rocketmq/store/index/QueryOffsetResult.java | 2 +- .../rocketmq/store/schedule/ScheduleMessageService.java | 2 +- .../store/transaction/TransactionCheckExecuter.java | 2 +- .../rocketmq/store/transaction/TransactionStateService.java | 2 +- .../com/alibaba/rocketmq/store/DefaultMessageStoreTest.java | 2 +- .../java/com/alibaba/rocketmq/tools/MQAdminStartup.java | 2 +- .../main/java/com/alibaba/rocketmq/tools/SubCommand.java | 2 +- .../com/alibaba/rocketmq/tools/broker/BrokerSubCommand.java | 2 +- .../alibaba/rocketmq/tools/cluster/ClusterSubCommand.java | 2 +- .../rocketmq/tools/connection/ConnectionSubCommand.java | 2 +- .../alibaba/rocketmq/tools/message/MessageSubCommand.java | 2 +- .../alibaba/rocketmq/tools/namesrv/NamesrvSubCommand.java | 2 +- .../com/alibaba/rocketmq/tools/stats/StatsSubCommand.java | 2 +- .../com/alibaba/rocketmq/tools/topic/TopicSubCommand.java | 2 +- 261 files changed, 263 insertions(+), 263 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java index ee65f2fb..9cc5a796 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerController.java @@ -48,7 +48,7 @@ /** * Broker各个服务控制器 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class BrokerController { private static final Logger log = LoggerFactory.getLogger(MixAll.BrokerLoggerName); diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java index fb3a1095..7b6e84bd 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java @@ -30,7 +30,7 @@ /** * Broker启动入口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class BrokerStartup { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientChannelInfo.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientChannelInfo.java index 5f8b8a4c..0a8067dd 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientChannelInfo.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientChannelInfo.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ClientChannelInfo { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientHousekeepingService.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientHousekeepingService.java index d19419eb..e769d612 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientHousekeepingService.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientHousekeepingService.java @@ -21,7 +21,7 @@ /** * 定期检测客户端连接,清除不活动的连接 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class ClientHousekeepingService implements ChannelEventListener { private static final Logger log = LoggerFactory.getLogger(MixAll.BrokerLoggerName); diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ConsumerGroupInfo.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ConsumerGroupInfo.java index c0a590ca..558dc34a 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ConsumerGroupInfo.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ConsumerGroupInfo.java @@ -20,7 +20,7 @@ /** * 整个Consumer Group信息 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ConsumerGroupInfo { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ConsumerManager.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ConsumerManager.java index 9b3b04f3..44ffc56a 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ConsumerManager.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ConsumerManager.java @@ -16,7 +16,7 @@ /** * Consumer连接、订阅关系管理 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ConsumerManager { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java index 07f09553..4fa81a41 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ProducerManager.java @@ -24,7 +24,7 @@ /** * 管理Producer组及各个Producer连接 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class ProducerManager { private static final Logger log = LoggerFactory.getLogger(MixAll.BrokerLoggerName); diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/ManyPullRequest.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/ManyPullRequest.java index 7b47b262..57f21da9 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/ManyPullRequest.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/ManyPullRequest.java @@ -9,7 +9,7 @@ /** * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ManyPullRequest { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/PullRequest.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/PullRequest.java index 47047c2f..8f5e66d9 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/PullRequest.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/PullRequest.java @@ -11,7 +11,7 @@ /** * 一个拉消息请求 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PullRequest { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/PullRequestHoldService.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/PullRequestHoldService.java index f33eda1f..a345c5ea 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/PullRequestHoldService.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/longpolling/PullRequestHoldService.java @@ -19,7 +19,7 @@ /** * 拉消息请求管理,如果拉不到消息,则在这里Hold住,等待消息到来 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PullRequestHoldService extends ServiceThread { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/offset/ConsumerOffsetManager.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/offset/ConsumerOffsetManager.java index bb9873cf..bc88f6be 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/offset/ConsumerOffsetManager.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/offset/ConsumerOffsetManager.java @@ -19,7 +19,7 @@ /** * Consumer消费进度管理 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ConsumerOffsetManager { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/ManyMessageTransfer.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/ManyMessageTransfer.java index 8fa70bc4..ab5ac5a2 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/ManyMessageTransfer.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/ManyMessageTransfer.java @@ -15,7 +15,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ManyMessageTransfer extends AbstractReferenceCounted implements FileRegion { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/OneMessageTransfer.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/OneMessageTransfer.java index 96108107..f020dde2 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/OneMessageTransfer.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/OneMessageTransfer.java @@ -14,7 +14,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class OneMessageTransfer extends AbstractReferenceCounted implements FileRegion { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/QueryMessageTransfer.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/QueryMessageTransfer.java index df7c9185..4c822096 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/QueryMessageTransfer.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/pagecache/QueryMessageTransfer.java @@ -15,7 +15,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class QueryMessageTransfer extends AbstractReferenceCounted implements FileRegion { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/AdminBrokerProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/AdminBrokerProcessor.java index c6b6f7e7..a11f6e3d 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/AdminBrokerProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/AdminBrokerProcessor.java @@ -39,7 +39,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class AdminBrokerProcessor implements NettyRequestProcessor { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ClientManageProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ClientManageProcessor.java index 0481882a..864ae091 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ClientManageProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ClientManageProcessor.java @@ -30,7 +30,7 @@ /** * Client注册与注销管理 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ClientManageProcessor implements NettyRequestProcessor { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java index 8438373b..7c07d796 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java @@ -30,7 +30,7 @@ /** * Commit或Rollback事务 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class EndTransactionProcessor implements NettyRequestProcessor { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ForwardRequestProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ForwardRequestProcessor.java index 851806c3..9acefda4 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ForwardRequestProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/ForwardRequestProcessor.java @@ -17,7 +17,7 @@ /** * 向Client转发请求,通常用于管理、监控、统计目的 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ForwardRequestProcessor implements NettyRequestProcessor { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/PullMessageProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/PullMessageProcessor.java index 7a0c057d..57bce4e3 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/PullMessageProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/PullMessageProcessor.java @@ -31,7 +31,7 @@ /** * 拉消息请求处理 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PullMessageProcessor implements NettyRequestProcessor { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/QueryMessageProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/QueryMessageProcessor.java index 82e64d89..630f933e 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/QueryMessageProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/QueryMessageProcessor.java @@ -31,7 +31,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class QueryMessageProcessor implements NettyRequestProcessor { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java index a57ec022..1fb5397a 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java @@ -34,7 +34,7 @@ /** * 处理客户端发送消息的请求 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class SendMessageProcessor implements NettyRequestProcessor { diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/topic/TopicConfigManager.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/topic/TopicConfigManager.java index cba3b420..38fac373 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/topic/TopicConfigManager.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/topic/TopicConfigManager.java @@ -24,7 +24,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * @author lansheng.zj@taobao.com * */ diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java index 464499fa..146d36a4 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/transaction/DefaultTransactionCheckExecuter.java @@ -22,7 +22,7 @@ /** * 存储层回调此接口,用来主动回查Producer的事务状态 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class DefaultTransactionCheckExecuter implements TransactionCheckExecuter { private static final Logger log = LoggerFactory.getLogger(MixAll.TransactionLoggerName); diff --git a/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/api/SendMessageTest.java b/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/api/SendMessageTest.java index d93ea12b..6cf53565 100644 --- a/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/api/SendMessageTest.java +++ b/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/api/SendMessageTest.java @@ -20,7 +20,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class SendMessageTest { diff --git a/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/offset/ConsumerOffsetManagerTest.java b/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/offset/ConsumerOffsetManagerTest.java index 8b9ec2d5..58cc5bf3 100644 --- a/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/offset/ConsumerOffsetManagerTest.java +++ b/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/offset/ConsumerOffsetManagerTest.java @@ -14,7 +14,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ConsumerOffsetManagerTest { diff --git a/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/topic/TopicConfigManagerTest.java b/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/topic/TopicConfigManagerTest.java index dcdcf63e..1850bfb7 100644 --- a/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/topic/TopicConfigManagerTest.java +++ b/rocketmq-broker/src/test/java/com/alibaba/rocketmq/broker/topic/TopicConfigManagerTest.java @@ -16,7 +16,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class TopicConfigManagerTest { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQAdmin.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQAdmin.java index 31e52ff9..5a1fdf08 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQAdmin.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQAdmin.java @@ -14,7 +14,7 @@ /** * MQ管理类接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface MQAdmin { /** diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQClientConfig.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQClientConfig.java index feb8b26d..a5208747 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQClientConfig.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQClientConfig.java @@ -11,7 +11,7 @@ /** * Producer与Consumer的公共配置 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MQClientConfig { private String namesrvAddr = null; diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/QueryResult.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/QueryResult.java index 379a7d00..baa15bb1 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/QueryResult.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/QueryResult.java @@ -11,7 +11,7 @@ /** * 查询消息返回结果 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class QueryResult { private final long indexLastUpdateTimestamp; diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/AllocateMessageQueueStrategy.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/AllocateMessageQueueStrategy.java index b6f70f88..f3c43c28 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/AllocateMessageQueueStrategy.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/AllocateMessageQueueStrategy.java @@ -11,7 +11,7 @@ /** * Consumer队列自动分配策略 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public interface AllocateMessageQueueStrategy { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/ConsumeFromWhereOffset.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/ConsumeFromWhereOffset.java index 7015c39f..7d3284cf 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/ConsumeFromWhereOffset.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/ConsumeFromWhereOffset.java @@ -6,7 +6,7 @@ /** * Consumer从哪里开始消费 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum ConsumeFromWhereOffset { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/ConsumeFromWhichNode.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/ConsumeFromWhichNode.java index 772468eb..d94f93d5 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/ConsumeFromWhichNode.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/ConsumeFromWhichNode.java @@ -6,7 +6,7 @@ /** * Consumer从Master还是Slave消费消息 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum ConsumeFromWhichNode { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java index 93d385fb..7608a682 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java @@ -22,7 +22,7 @@ /** * 消息消费者,主动消费 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class DefaultMQPullConsumer implements MQPullConsumer { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java index 8352bdf4..e427728b 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java @@ -24,7 +24,7 @@ /** * 被动Consumer * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class DefaultMQPushConsumer implements MQPushConsumer { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQConsumer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQConsumer.java index 7e8762a9..b9fc41b4 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQConsumer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQConsumer.java @@ -12,7 +12,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public interface MQConsumer extends MQAdmin { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQPullConsumer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQPullConsumer.java index 3f40f598..04e34a15 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQPullConsumer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQPullConsumer.java @@ -14,7 +14,7 @@ /** * 消费者,主动方式消费 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface MQPullConsumer extends MQConsumer { /** diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQPushConsumer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQPushConsumer.java index 38d73324..4b05efa6 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQPushConsumer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MQPushConsumer.java @@ -8,7 +8,7 @@ /** * 消费者,被动方式消费 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface MQPushConsumer extends MQConsumer { /** diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MessageQueueListener.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MessageQueueListener.java index a0e52e39..b01dbf4e 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MessageQueueListener.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/MessageQueueListener.java @@ -11,7 +11,7 @@ /** * 队列变化监听器 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface MessageQueueListener { public void messageQueueChanged(final String topic, final List mqAll, final List mqDivided); diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullCallback.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullCallback.java index e9f19229..ccdbed3e 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullCallback.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullCallback.java @@ -6,7 +6,7 @@ /** * 异步拉消息回调接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public interface PullCallback { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullResult.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullResult.java index c5b8f76d..c973a6b7 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullResult.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullResult.java @@ -11,7 +11,7 @@ /** * 拉消息返回结果 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class PullResult { private final PullStatus pullStatus; diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullStatus.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullStatus.java index dfea2bb8..f81c5d7a 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullStatus.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/PullStatus.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.client.consumer; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum PullStatus { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeConcurrentlyContext.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeConcurrentlyContext.java index d04eddce..7d184f73 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeConcurrentlyContext.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeConcurrentlyContext.java @@ -9,7 +9,7 @@ /** * 消费消息上下文,同一队列的消息会并行消费,消息无顺序性 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class ConsumeConcurrentlyContext { /** diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeConcurrentlyStatus.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeConcurrentlyStatus.java index de0528fe..9749ecd3 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeConcurrentlyStatus.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeConcurrentlyStatus.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.client.consumer.listener; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum ConsumeConcurrentlyStatus { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeOrderlyContext.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeOrderlyContext.java index 9eb1b6da..aefb53b2 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeOrderlyContext.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeOrderlyContext.java @@ -9,7 +9,7 @@ /** * 消费消息上下文,同一队列的消息同一时刻只有一个线程消费,可保证同一队列消息顺序消费 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class ConsumeOrderlyContext { /** diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeOrderlyStatus.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeOrderlyStatus.java index 2aca0896..3b7bd5cd 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeOrderlyStatus.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/ConsumeOrderlyStatus.java @@ -5,7 +5,7 @@ /** * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum ConsumeOrderlyStatus { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListener.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListener.java index ec8a1ca8..e2ee66fd 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListener.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListener.java @@ -8,7 +8,7 @@ /** * 消息监听器,被动方式订阅消息使用,需要用户实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface MessageListener { } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListenerConcurrently.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListenerConcurrently.java index f291a65d..664ccf40 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListenerConcurrently.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListenerConcurrently.java @@ -11,7 +11,7 @@ /** * 同一队列的消息并行消费 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public interface MessageListenerConcurrently extends MessageListener { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListenerOrderly.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListenerOrderly.java index 78acb59e..96fa8475 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListenerOrderly.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/listener/MessageListenerOrderly.java @@ -11,7 +11,7 @@ /** * 同一队列的消息同一时刻只能一个线程消费,可保证消息在同一队列严格有序消费 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public interface MessageListenerOrderly extends MessageListener { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueAveragely.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueAveragely.java index 7eeb789f..cf1cd0c7 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueAveragely.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueAveragely.java @@ -13,7 +13,7 @@ /** * 平均分配队列算法 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class AllocateMessageQueueAveragely implements AllocateMessageQueueStrategy { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByConfig.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByConfig.java index 3a8d3daf..9456e2e4 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByConfig.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByConfig.java @@ -12,7 +12,7 @@ /** * 按照配置来分配队列,建议应用使用Spring来初始化 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class AllocateMessageQueueByConfig implements AllocateMessageQueueStrategy { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByMachineRoom.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByMachineRoom.java index a5fcbde1..1d200460 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByMachineRoom.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByMachineRoom.java @@ -12,7 +12,7 @@ /** * 按照机房来分配队列,例如支付宝逻辑机房 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class AllocateMessageQueueByMachineRoom implements AllocateMessageQueueStrategy { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/exception/MQBrokerException.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/exception/MQBrokerException.java index 2d2858ac..410b2fb8 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/exception/MQBrokerException.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/exception/MQBrokerException.java @@ -7,7 +7,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MQBrokerException extends Exception { private static final long serialVersionUID = 5975020272601250368L; diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/exception/MQClientException.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/exception/MQClientException.java index 60b53271..c2d69683 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/exception/MQClientException.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/exception/MQClientException.java @@ -9,7 +9,7 @@ /** * MQ异常类 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MQClientException extends Exception { private static final long serialVersionUID = -5758410930844185841L; diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java index adb1d458..51548423 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/ClientRemotingProcessor.java @@ -26,7 +26,7 @@ /** * Client接收Broker的回调操作,例如事务回调,或者其他管理类命令回调 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class ClientRemotingProcessor implements NettyRequestProcessor { private final Logger log; diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/CommunicationMode.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/CommunicationMode.java index 838fe7e1..28f8eeff 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/CommunicationMode.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/CommunicationMode.java @@ -6,7 +6,7 @@ /** * 通信方式 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum CommunicationMode { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/FindBrokerResult.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/FindBrokerResult.java index 129a11f9..fea52aea 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/FindBrokerResult.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/FindBrokerResult.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.client.impl; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class FindBrokerResult { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQAdminImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQAdminImpl.java index e0cfa44b..642b9a8f 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQAdminImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQAdminImpl.java @@ -40,7 +40,7 @@ /** * 管理类接口实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class MQAdminImpl { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java index 7f78b69d..a1e822af 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientAPIImpl.java @@ -67,7 +67,7 @@ /** * 封装所有与服务器通信部分API * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class MQClientAPIImpl { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientManager.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientManager.java index 0c8538c8..cce9a11d 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientManager.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/MQClientManager.java @@ -13,7 +13,7 @@ /** * Client单例管理 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class MQClientManager { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java index b4f37b7f..7be0eb41 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java @@ -36,7 +36,7 @@ /** * 主动Consumer实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class DefaultMQPullConsumerImpl implements MQConsumerInner { private ServiceState serviceState = ServiceState.CREATE_JUST; diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java index 87b0cacc..867037ea 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java @@ -21,7 +21,7 @@ /** * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class DefaultMQPushConsumerImpl implements MQPushConsumer { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/MQConsumerInner.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/MQConsumerInner.java index 33a2d0c0..d417d08e 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/MQConsumerInner.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/MQConsumerInner.java @@ -11,7 +11,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public interface MQConsumerInner { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullAPIWrapper.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullAPIWrapper.java index b944dbea..ebda37df 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullAPIWrapper.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullAPIWrapper.java @@ -23,7 +23,7 @@ /** * 对Pull接口进行进一步的封装 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PullAPIWrapper { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullMessageService.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullMessageService.java index f3b310a3..b0f7ba3a 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullMessageService.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullMessageService.java @@ -12,7 +12,7 @@ /** * 长轮询拉消息服务,单线程异步拉取 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PullMessageService extends ServiceThread { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java index 78370b2e..17e05596 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java @@ -7,7 +7,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PullRequest { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullResultExt.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullResultExt.java index 0355bc73..d3ec7c42 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullResultExt.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullResultExt.java @@ -13,7 +13,7 @@ /** * 只在内部使用,不对外公开 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PullResultExt extends PullResult { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java index b43a78c1..757768ca 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java @@ -50,7 +50,7 @@ /** * 客户端Factory类,用来管理Producer与Consumer * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class MQClientFactory { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java index 61abb1ce..104871ef 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/DefaultMQProducerImpl.java @@ -46,7 +46,7 @@ /** * 生产者默认实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class DefaultMQProducerImpl implements MQProducerInner { private ServiceState serviceState = ServiceState.CREATE_JUST; diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java index 5dbbf43c..3064450e 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/MQProducerInner.java @@ -8,7 +8,7 @@ /** * Producer内部接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface MQProducerInner { public Set getPublishTopicList(); diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/SendResultExt.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/SendResultExt.java index f7e52aab..6f1a7b4b 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/SendResultExt.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/SendResultExt.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class SendResultExt extends SendResult { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/TopicPublishInfo.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/TopicPublishInfo.java index c332e04b..2ffa9d7f 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/TopicPublishInfo.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/producer/TopicPublishInfo.java @@ -11,7 +11,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class TopicPublishInfo { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/DefaultMQProducer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/DefaultMQProducer.java index 244ead7a..22168fa3 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/DefaultMQProducer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/DefaultMQProducer.java @@ -23,7 +23,7 @@ /** * 消息生产者,适合使用spring初始化 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class DefaultMQProducer implements MQProducer { /** diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/LocalTransactionExecuter.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/LocalTransactionExecuter.java index da7b711a..51869ee8 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/LocalTransactionExecuter.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/LocalTransactionExecuter.java @@ -9,7 +9,7 @@ /** * 执行本地事务,由客户端回调 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public interface LocalTransactionExecuter { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/LocalTransactionState.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/LocalTransactionState.java index 5e966a22..c584bc50 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/LocalTransactionState.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/LocalTransactionState.java @@ -6,7 +6,7 @@ /** * Producer本地事务执行状态 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public enum LocalTransactionState { COMMIT_MESSAGE, diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/MQProducer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/MQProducer.java index c573e10e..e31ee3e7 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/MQProducer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/MQProducer.java @@ -16,7 +16,7 @@ /** * 消息生产者 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface MQProducer extends MQAdmin { /** diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/MessageQueueSelector.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/MessageQueueSelector.java index f39b9386..9a1cb2e6 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/MessageQueueSelector.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/MessageQueueSelector.java @@ -12,7 +12,7 @@ /** * 队列选择器 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface MessageQueueSelector { public MessageQueue select(final List mqs, final Message msg, final Object arg); diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendCallback.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendCallback.java index 2ba2944f..b34b1674 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendCallback.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendCallback.java @@ -6,7 +6,7 @@ /** * 异步发送消息回调接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public interface SendCallback { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendResult.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendResult.java index 6ae35c72..5fc87334 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendResult.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendResult.java @@ -9,7 +9,7 @@ /** * 发送消息结果 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class SendResult { private final SendStatus sendStatus; diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendStatus.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendStatus.java index 2a91482c..3504469a 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendStatus.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/SendStatus.java @@ -6,7 +6,7 @@ /** * 这4种状态都表示消息已经成功到达Master * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum SendStatus { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/TransactionCheckListener.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/TransactionCheckListener.java index 17136170..c4313454 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/TransactionCheckListener.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/TransactionCheckListener.java @@ -9,7 +9,7 @@ /** * 服务器回调Producer,检查本地事务分支成功还是失败 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public interface TransactionCheckListener { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/TransactionMQProducer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/TransactionMQProducer.java index a5f2ae30..4dc9b09b 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/TransactionMQProducer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/TransactionMQProducer.java @@ -10,7 +10,7 @@ /** * 支持分布式事务Producer * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class TransactionMQProducer extends DefaultMQProducer { diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByMachineRoom.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByMachineRoom.java index c9baceee..4166c86d 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByMachineRoom.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByMachineRoom.java @@ -13,7 +13,7 @@ /** * 根据机房来选择发往哪个队列,支付宝逻辑机房使用 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class SelectMessageQueueByMachineRoom implements MessageQueueSelector { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/BrokerConfig.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/BrokerConfig.java index 6964cdf8..d59aa366 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/BrokerConfig.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/BrokerConfig.java @@ -13,7 +13,7 @@ /** * 服务器配置 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class BrokerConfig { private String rocketmqHome = System.getenv(MixAll.ROCKETMQ_HOME_ENV); diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/DataVersion.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/DataVersion.java index b2abcdfe..0579a1c3 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/DataVersion.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/DataVersion.java @@ -9,7 +9,7 @@ /** * 用来标识数据的版本号 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class DataVersion { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MQVersion.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MQVersion.java index 6a26784a..13263fc8 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MQVersion.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MQVersion.java @@ -3,7 +3,7 @@ /** * 定义各个版本信息 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MQVersion { // TODO 每次发布版本都要修改此处版本号 diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/Message.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/Message.java index 18ba1a9a..4aadc3b9 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/Message.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/Message.java @@ -11,7 +11,7 @@ /** * 消息,Producer与Consumer使用 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class Message { /** diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageDecoder.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageDecoder.java index fd84b0f9..0c2cd7f9 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageDecoder.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageDecoder.java @@ -23,7 +23,7 @@ /** * 消息解码 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MessageDecoder { /** diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageExt.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageExt.java index a03e4cfd..ee7d6e09 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageExt.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageExt.java @@ -13,7 +13,7 @@ /** * 消息扩展属性,在服务器上产生此对象 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MessageExt extends Message { // 队列ID diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageId.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageId.java index a45208aa..0e44bbb6 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageId.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageId.java @@ -7,7 +7,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class MessageId { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageQueue.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageQueue.java index a43c0abb..d1268a29 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageQueue.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MessageQueue.java @@ -6,7 +6,7 @@ /** * 消息队列数据结构,对外提供 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MessageQueue { private String topic; diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java index 4d30aeea..d0de564e 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/MixAll.java @@ -41,7 +41,7 @@ /** * 各种方法大杂烩 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * @author lansheng.zj@taobao.com * */ diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/Pair.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/Pair.java index 0ca939fb..b8ba4a4d 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/Pair.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/Pair.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.common; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class Pair { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/ServiceState.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/ServiceState.java index f12be485..2d42e3fb 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/ServiceState.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/ServiceState.java @@ -6,7 +6,7 @@ /** * 服务对象的状态,通常需要start,shutdown * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum ServiceState { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/ServiceThread.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/ServiceThread.java index 2fb4d9ca..73b771d4 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/ServiceThread.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/ServiceThread.java @@ -10,7 +10,7 @@ /** * 后台服务线程基类 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public abstract class ServiceThread implements Runnable { private static final Logger stlog = LoggerFactory.getLogger(MixAll.CommonLoggerName); diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/TopicConfig.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/TopicConfig.java index 33c71294..5a916812 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/TopicConfig.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/TopicConfig.java @@ -6,7 +6,7 @@ /** * Topic配置 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class TopicConfig { public static int DefaultReadQueueNums = 16; diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/TopicFilterType.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/TopicFilterType.java index 8e147ee9..ecdb982b 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/TopicFilterType.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/TopicFilterType.java @@ -6,7 +6,7 @@ /** * Topic过滤方式,默认为单TAG过滤 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum TopicFilterType { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/UtilALl.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/UtilALl.java index 64170a5c..d5121802 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/UtilALl.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/UtilALl.java @@ -22,7 +22,7 @@ /** * 各种方法大杂烩 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class UtilALl { public static int getPid() { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/NamesrvConfig.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/NamesrvConfig.java index 866f49c5..e0b2c8fd 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/NamesrvConfig.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/NamesrvConfig.java @@ -13,7 +13,7 @@ /** * Name server 的配置类 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * @author lansheng.zj@taobao.com * */ diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/TopAddressing.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/TopAddressing.java index d2e0b155..85002e02 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/TopAddressing.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/TopAddressing.java @@ -19,7 +19,7 @@ /** * 寻址服务 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class TopAddressing { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/MQProtosHelper.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/MQProtosHelper.java index ec804c30..cb0c983a 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/MQProtosHelper.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/MQProtosHelper.java @@ -13,7 +13,7 @@ /** * 协议辅助类 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class MQProtosHelper { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CheckTransactionStateRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CheckTransactionStateRequestHeader.java index 7e3cd71a..3d509243 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CheckTransactionStateRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CheckTransactionStateRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class CheckTransactionStateRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CheckTransactionStateResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CheckTransactionStateResponseHeader.java index f46a767e..aaebe704 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CheckTransactionStateResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CheckTransactionStateResponseHeader.java @@ -10,7 +10,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class CheckTransactionStateResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CreateTopicRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CreateTopicRequestHeader.java index 0dfe4aa7..1bc34cf9 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CreateTopicRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/CreateTopicRequestHeader.java @@ -10,7 +10,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class CreateTopicRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/DeleteTopicRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/DeleteTopicRequestHeader.java index 74408513..33851e73 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/DeleteTopicRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/DeleteTopicRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class DeleteTopicRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java index ef2cf1d6..8c895adb 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java @@ -11,7 +11,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class EndTransactionRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionResponseHeader.java index 0a1520c4..36d46f81 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionResponseHeader.java @@ -8,7 +8,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class EndTransactionResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetAllTopicConfigResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetAllTopicConfigResponseHeader.java index 0d216a88..fb4f2248 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetAllTopicConfigResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetAllTopicConfigResponseHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class GetAllTopicConfigResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetBrokerConfigResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetBrokerConfigResponseHeader.java index 0aad5b7a..703e6019 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetBrokerConfigResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetBrokerConfigResponseHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class GetBrokerConfigResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetEarliestMsgStoretimeRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetEarliestMsgStoretimeRequestHeader.java index c56f3b7a..147ad65d 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetEarliestMsgStoretimeRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetEarliestMsgStoretimeRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class GetEarliestMsgStoretimeRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetEarliestMsgStoretimeResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetEarliestMsgStoretimeResponseHeader.java index 23f668a0..35d8218c 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetEarliestMsgStoretimeResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetEarliestMsgStoretimeResponseHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class GetEarliestMsgStoretimeResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMaxOffsetRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMaxOffsetRequestHeader.java index 4620ff28..ae9c4a16 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMaxOffsetRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMaxOffsetRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class GetMaxOffsetRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMaxOffsetResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMaxOffsetResponseHeader.java index b30c03d7..5429da3a 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMaxOffsetResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMaxOffsetResponseHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class GetMaxOffsetResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMinOffsetRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMinOffsetRequestHeader.java index 0aac1a04..6f4b840f 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMinOffsetRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMinOffsetRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class GetMinOffsetRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMinOffsetResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMinOffsetResponseHeader.java index cd10d6d5..c24abb69 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMinOffsetResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/GetMinOffsetResponseHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class GetMinOffsetResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/PullMessageRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/PullMessageRequestHeader.java index 0e5566ff..093682d3 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/PullMessageRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/PullMessageRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PullMessageRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/PullMessageResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/PullMessageResponseHeader.java index a0298597..abeba3a5 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/PullMessageResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/PullMessageResponseHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PullMessageResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryConsumerOffsetRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryConsumerOffsetRequestHeader.java index d1b361e2..1d7bfa4b 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryConsumerOffsetRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryConsumerOffsetRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class QueryConsumerOffsetRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryConsumerOffsetResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryConsumerOffsetResponseHeader.java index 5e106493..71baf82e 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryConsumerOffsetResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryConsumerOffsetResponseHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class QueryConsumerOffsetResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryMessageRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryMessageRequestHeader.java index fdff8929..e28b9657 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryMessageRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryMessageRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class QueryMessageRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryMessageResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryMessageResponseHeader.java index bc99ac0e..d4b99030 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryMessageResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/QueryMessageResponseHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class QueryMessageResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SearchOffsetRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SearchOffsetRequestHeader.java index 6c47890b..9231e780 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SearchOffsetRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SearchOffsetRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class SearchOffsetRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SearchOffsetResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SearchOffsetResponseHeader.java index f2566d86..83ba9bd0 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SearchOffsetResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SearchOffsetResponseHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class SearchOffsetResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SendMessageRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SendMessageRequestHeader.java index 2e1b961a..2fa01600 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SendMessageRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SendMessageRequestHeader.java @@ -10,7 +10,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class SendMessageRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SendMessageResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SendMessageResponseHeader.java index 15151445..1c7b106c 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SendMessageResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/SendMessageResponseHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class SendMessageResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UnregisterClientRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UnregisterClientRequestHeader.java index 124a3a86..0e3a88c4 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UnregisterClientRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UnregisterClientRequestHeader.java @@ -10,7 +10,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class UnregisterClientRequestHeader implements CommandCustomHeader { @CFNotNull diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UnregisterClientResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UnregisterClientResponseHeader.java index 0836b7f2..39c80eb2 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UnregisterClientResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UnregisterClientResponseHeader.java @@ -7,7 +7,7 @@ import com.alibaba.rocketmq.remoting.exception.RemotingCommandException; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class UnregisterClientResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UpdateConsumerOffsetRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UpdateConsumerOffsetRequestHeader.java index 1f7768e5..83c1dd4d 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UpdateConsumerOffsetRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UpdateConsumerOffsetRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class UpdateConsumerOffsetRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UpdateConsumerOffsetResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UpdateConsumerOffsetResponseHeader.java index 6be10e8e..b1f1edef 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UpdateConsumerOffsetResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/UpdateConsumerOffsetResponseHeader.java @@ -8,7 +8,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class UpdateConsumerOffsetResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/ViewMessageRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/ViewMessageRequestHeader.java index c3e97f1b..ca82aedb 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/ViewMessageRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/ViewMessageRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ViewMessageRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/ViewMessageResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/ViewMessageResponseHeader.java index 73437e86..e1ad7f9c 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/ViewMessageResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/ViewMessageResponseHeader.java @@ -8,7 +8,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ViewMessageResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/GetRouteInfoRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/GetRouteInfoRequestHeader.java index 90d6828f..15c9d5a2 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/GetRouteInfoRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/GetRouteInfoRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class GetRouteInfoRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/GetRouteInfoResponseHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/GetRouteInfoResponseHeader.java index f76605a8..6b2dbba2 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/GetRouteInfoResponseHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/GetRouteInfoResponseHeader.java @@ -8,7 +8,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class GetRouteInfoResponseHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/RegisterOrderTopicRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/RegisterOrderTopicRequestHeader.java index 8d23d6a1..30dc5108 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/RegisterOrderTopicRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/namesrv/RegisterOrderTopicRequestHeader.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class RegisterOrderTopicRequestHeader implements CommandCustomHeader { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumeType.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumeType.java index ead0768c..f811b6bc 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumeType.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumeType.java @@ -6,7 +6,7 @@ /** * 消费类型 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum ConsumeType { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumerData.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumerData.java index a5e4b48e..91bc6d73 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumerData.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ConsumerData.java @@ -8,7 +8,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ConsumerData { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatData.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatData.java index 8456c52d..515c9282 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatData.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatData.java @@ -10,7 +10,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class HeartbeatData extends RemotingSerializable { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/MessageModel.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/MessageModel.java index 631353dd..b2d6e5d6 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/MessageModel.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/MessageModel.java @@ -6,7 +6,7 @@ /** * 消息模型 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum MessageModel { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ProducerData.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ProducerData.java index 4ee23b5b..134bc852 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ProducerData.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/ProducerData.java @@ -6,7 +6,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ProducerData { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/SubscriptionData.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/SubscriptionData.java index 57bc6dad..debb58cd 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/SubscriptionData.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/heartbeat/SubscriptionData.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.common.protocol.heartbeat; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class SubscriptionData { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java index f468d094..498620c9 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java @@ -11,7 +11,7 @@ /** * Topic路由数据,从Name Server获取 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class TopicRouteData extends RemotingSerializable { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/sysflag/MessageSysFlag.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/sysflag/MessageSysFlag.java index f908da1f..9cc47a34 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/sysflag/MessageSysFlag.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/sysflag/MessageSysFlag.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.common.sysflag; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class MessageSysFlag { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/sysflag/PullSysFlag.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/sysflag/PullSysFlag.java index 9c331b1b..55f367f4 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/sysflag/PullSysFlag.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/sysflag/PullSysFlag.java @@ -6,7 +6,7 @@ /** * Pull接口用到的flag定义 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PullSysFlag { diff --git a/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/MQProtosHelperTest.java b/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/MQProtosHelperTest.java index 5b173e19..8ca1a4bc 100644 --- a/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/MQProtosHelperTest.java +++ b/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/MQProtosHelperTest.java @@ -2,7 +2,7 @@ /** * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MQProtosHelperTest { diff --git a/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatTest.java b/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatTest.java index e3c58968..af1098e5 100644 --- a/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatTest.java +++ b/rocketmq-common/src/test/java/com/alibaba/rocketmq/common/protocol/heartbeat/HeartbeatTest.java @@ -11,7 +11,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class HeartbeatTest { @Test diff --git a/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleConfig.java b/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleConfig.java index 90519728..2400aa8a 100644 --- a/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleConfig.java +++ b/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleConfig.java @@ -7,7 +7,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ConsoleConfig { diff --git a/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleController.java b/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleController.java index 44deaf5c..7f186941 100644 --- a/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleController.java +++ b/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleController.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class ConsoleController { private final ConsoleConfig consoleConfig; diff --git a/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleStartup.java b/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleStartup.java index f850f00e..31352dab 100644 --- a/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleStartup.java +++ b/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleStartup.java @@ -24,7 +24,7 @@ /** * Broker启动入口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class ConsoleStartup { diff --git a/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/http/ConsoleJettyHander.java b/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/http/ConsoleJettyHander.java index 0f8f7fcc..2fbda30b 100644 --- a/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/http/ConsoleJettyHander.java +++ b/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/http/ConsoleJettyHander.java @@ -14,7 +14,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ConsoleJettyHander extends AbstractHandler { diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/benchmark/Consumer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/benchmark/Consumer.java index 9b9a2d74..1ad5a7fc 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/benchmark/Consumer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/benchmark/Consumer.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.example.benchmark; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class Consumer { diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/benchmark/Producer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/benchmark/Producer.java index d8bc8db1..b9052777 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/benchmark/Producer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/benchmark/Producer.java @@ -21,7 +21,7 @@ /** * 性能测试,多线程同步发送消息 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class Producer { diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/Producer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/Producer.java index d357e2a7..651e7e61 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/Producer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/Producer.java @@ -13,7 +13,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class Producer { diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/PullConsumer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/PullConsumer.java index d06a02b9..75c122c7 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/PullConsumer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/PullConsumer.java @@ -19,7 +19,7 @@ /** * 主动拉消息方式的Consumer * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PullConsumer { diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/PushConsumer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/PushConsumer.java index 340a0d20..d9b1f9d7 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/PushConsumer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/simple/PushConsumer.java @@ -17,7 +17,7 @@ /** * 被动接收Broker Push消息的Consumer * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class PushConsumer { diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java index 5ef0fb2e..db660592 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/transaction/TransactionProducer.java @@ -11,7 +11,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class TransactionProducer { diff --git a/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/NamesrvController.java b/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/NamesrvController.java index 8baa627e..b690dba7 100644 --- a/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/NamesrvController.java +++ b/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/NamesrvController.java @@ -30,7 +30,7 @@ /** * Name server 各个服务控制器 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * @author lansheng.zj@taobao.com */ public class NamesrvController { diff --git a/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/NamesrvStartup.java b/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/NamesrvStartup.java index dd377b5b..3bd047ba 100644 --- a/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/NamesrvStartup.java +++ b/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/NamesrvStartup.java @@ -29,7 +29,7 @@ /** * Name server 启动入口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class NamesrvStartup { diff --git a/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/processor/AllRequestProcessor.java b/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/processor/AllRequestProcessor.java index f7bcf4cd..a82f9b83 100644 --- a/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/processor/AllRequestProcessor.java +++ b/rocketmq-namesrv/src/main/java/com/alibaba/rocketmq/namesrv/processor/AllRequestProcessor.java @@ -22,7 +22,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * @author lansheng.zj@taobao.com */ public class AllRequestProcessor implements NettyRequestProcessor { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/ChannelEventListener.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/ChannelEventListener.java index 4629c811..5fabb33b 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/ChannelEventListener.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/ChannelEventListener.java @@ -21,7 +21,7 @@ /** * 监听Channel的事件,包括连接断开、连接建立、连接异常,传送这些事件到应用层 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface ChannelEventListener { public void onChannelConnect(final String remoteAddr, final Channel channel); diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/CommandCustomHeader.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/CommandCustomHeader.java index 47af0e74..4f891f38 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/CommandCustomHeader.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/CommandCustomHeader.java @@ -21,7 +21,7 @@ /** * RemotingCommand中自定义字段反射对象的公共接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface CommandCustomHeader { public void checkFields() throws RemotingCommandException; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/InvokeCallback.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/InvokeCallback.java index 6620a587..453a32a7 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/InvokeCallback.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/InvokeCallback.java @@ -21,7 +21,7 @@ /** * 异步调用应答回调接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface InvokeCallback { public void operationComplete(final ResponseFuture responseFuture); diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingClient.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingClient.java index a2ebed5f..d8f84577 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingClient.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingClient.java @@ -29,7 +29,7 @@ /** * 远程通信,Client接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface RemotingClient { public void start(); diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingServer.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingServer.java index 07649ee8..4f158fe9 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingServer.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/RemotingServer.java @@ -29,7 +29,7 @@ /** * 远程通信,Server接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface RemotingServer { public void start() throws InterruptedException; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNotNull.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNotNull.java index 83568e39..87af0c75 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNotNull.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNotNull.java @@ -25,7 +25,7 @@ /** * 表示字段不允许为空 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ @Documented @Retention(RetentionPolicy.CLASS) diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNullable.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNullable.java index 385cc082..3e84ae82 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNullable.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/annotation/CFNullable.java @@ -25,7 +25,7 @@ /** * 标识字段可以非空 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ @Documented @Retention(RetentionPolicy.CLASS) diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/Pair.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/Pair.java index 7798b994..31e2eb2f 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/Pair.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/Pair.java @@ -18,7 +18,7 @@ /** * 包装2个对象 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class Pair { private T1 object1; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingHelper.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingHelper.java index 1b600d76..baeb920c 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingHelper.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingHelper.java @@ -44,7 +44,7 @@ /** * 通信层一些辅助方法 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class RemotingHelper { public static final String RemotingLogName = "RocketmqRemoting"; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingUtil.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingUtil.java index f285a91d..2d41aa2e 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingUtil.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/RemotingUtil.java @@ -33,7 +33,7 @@ /** * 网络相关方法 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class RemotingUtil { public static final String OS_NAME = System.getProperty("os.name"); diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java index 596be23d..594629c7 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/SemaphoreReleaseOnlyOnce.java @@ -22,7 +22,7 @@ /** * 信号量保证只释放一次 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class SemaphoreReleaseOnlyOnce { private final AtomicBoolean released = new AtomicBoolean(false); diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/ServiceThread.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/ServiceThread.java index e51cc9e1..f2f4769b 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/ServiceThread.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/common/ServiceThread.java @@ -22,7 +22,7 @@ /** * 后台服务线程基类 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public abstract class ServiceThread implements Runnable { private static final Logger stlog = LoggerFactory.getLogger(RemotingHelper.RemotingLogName); diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingCommandException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingCommandException.java index 9ee12d81..cc834f7d 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingCommandException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingCommandException.java @@ -18,7 +18,7 @@ /** * 命令解析自定义字段时,校验字段有效性抛出异常 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class RemotingCommandException extends RemotingException { private static final long serialVersionUID = -6061365915274953096L; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingConnectException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingConnectException.java index 1f950bba..1660081e 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingConnectException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingConnectException.java @@ -18,7 +18,7 @@ /** * Client连接Server失败,抛出此异常 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class RemotingConnectException extends RemotingException { private static final long serialVersionUID = -5565366231695911316L; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingException.java index 64f0b657..420ef83b 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingException.java @@ -18,7 +18,7 @@ /** * 通信层异常父类 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class RemotingException extends Exception { private static final long serialVersionUID = -5690687334570505110L; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingSendRequestException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingSendRequestException.java index 01d4d7fb..4ced2511 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingSendRequestException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingSendRequestException.java @@ -18,7 +18,7 @@ /** * RPC调用中,客户端发送请求失败,抛出此异常 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class RemotingSendRequestException extends RemotingException { private static final long serialVersionUID = 5391285827332471674L; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTimeoutException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTimeoutException.java index 9a927948..0177e1d6 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTimeoutException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTimeoutException.java @@ -18,7 +18,7 @@ /** * RPC调用超时异常 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class RemotingTimeoutException extends RemotingException { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTooMuchRequestException.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTooMuchRequestException.java index a1216390..b7e903d8 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTooMuchRequestException.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/exception/RemotingTooMuchRequestException.java @@ -18,7 +18,7 @@ /** * 异步调用或者Oneway调用,堆积的请求超过信号量最大值 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class RemotingTooMuchRequestException extends RemotingException { private static final long serialVersionUID = 4326919581254519654L; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyClientConfig.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyClientConfig.java index 10bd617f..4376b15b 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyClientConfig.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyClientConfig.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.remoting.netty; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class NettyClientConfig { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyDecoder.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyDecoder.java index abf62d2a..5bc48af9 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyDecoder.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyDecoder.java @@ -15,7 +15,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class NettyDecoder extends LengthFieldBasedFrameDecoder { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEncoder.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEncoder.java index 44d0ea96..5ed7cf6c 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEncoder.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEncoder.java @@ -17,7 +17,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class NettyEncoder extends MessageToByteEncoder { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEvent.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEvent.java index de488278..e2ebfafb 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEvent.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEvent.java @@ -7,7 +7,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class NettyEvent { private final NettyEventType type; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEventType.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEventType.java index 1ba7219c..27bed4c0 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEventType.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyEventType.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.remoting.netty; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public enum NettyEventType { CONNECT, diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java index 4b381172..3bfc6534 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingAbstract.java @@ -35,7 +35,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public abstract class NettyRemotingAbstract { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java index 4affc23e..e72805a4 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java @@ -51,7 +51,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class NettyRemotingClient extends NettyRemotingAbstract implements RemotingClient { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java index 2090c36d..94548792 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java @@ -39,7 +39,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class NettyRemotingServer extends NettyRemotingAbstract implements RemotingServer { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRequestProcessor.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRequestProcessor.java index b33fd1a9..bbb2c3e0 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRequestProcessor.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRequestProcessor.java @@ -11,7 +11,7 @@ /** * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public interface NettyRequestProcessor { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyServerConfig.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyServerConfig.java index a1361f14..5b906f63 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyServerConfig.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyServerConfig.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.remoting.netty; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class NettyServerConfig { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/ResponseFuture.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/ResponseFuture.java index e0cf19af..7fc64b0a 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/ResponseFuture.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/ResponseFuture.java @@ -14,7 +14,7 @@ /** * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ResponseFuture { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingCommand.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingCommand.java index 4aad2406..b0eb080e 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingCommand.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingCommand.java @@ -25,7 +25,7 @@ /** * RPC 请求应答命令 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class RemotingCommand { public static String RemotingVersionKey = "rocketmq.remoting.version"; diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingCommandType.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingCommandType.java index d7d17c08..e8fd65e7 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingCommandType.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingCommandType.java @@ -6,7 +6,7 @@ /** * 命令类型,请求还是应答 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum RemotingCommandType { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingProtosHelper.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingProtosHelper.java index b38e6113..51c2f028 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingProtosHelper.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingProtosHelper.java @@ -17,7 +17,7 @@ /** * 协议辅助类 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class RemotingProtosHelper { diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java index b0a23e8c..c5a91416 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java @@ -6,7 +6,7 @@ /** * 复杂对象的序列化,利用gson来实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public abstract class RemotingSerializable { public String toJson() { diff --git a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/protocol/RemotingProtosHelperTest.java b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/protocol/RemotingProtosHelperTest.java index a4e1c03e..af7f1a96 100644 --- a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/protocol/RemotingProtosHelperTest.java +++ b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/protocol/RemotingProtosHelperTest.java @@ -19,7 +19,7 @@ /** * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class RemotingProtosHelperTest { @Test diff --git a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/ExceptionTest.java b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/ExceptionTest.java index 8a5448fe..e632ff16 100644 --- a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/ExceptionTest.java +++ b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/ExceptionTest.java @@ -23,7 +23,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ExceptionTest { diff --git a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/MixTest.java b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/MixTest.java index c6358f91..656fc93a 100644 --- a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/MixTest.java +++ b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/MixTest.java @@ -7,7 +7,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class MixTest { diff --git a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/NettyRPCTest.java b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/NettyRPCTest.java index a1c26280..f2267992 100644 --- a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/NettyRPCTest.java +++ b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/NettyRPCTest.java @@ -25,7 +25,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class NettyRPCTest { diff --git a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/SyncInvokeTest.java b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/SyncInvokeTest.java index 7c8d3fa4..5b17ea9b 100644 --- a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/SyncInvokeTest.java +++ b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/remoting/SyncInvokeTest.java @@ -12,7 +12,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class SyncInvokeTest { diff --git a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/subclass/TestSubClassAuto.java b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/subclass/TestSubClassAuto.java index dc00a281..0baa7eac 100644 --- a/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/subclass/TestSubClassAuto.java +++ b/rocketmq-remoting/src/test/java/com/alibaba/rocketmq/subclass/TestSubClassAuto.java @@ -9,7 +9,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class TestSubClassAuto { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/Test.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/Test.java index 4917d661..4053f490 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/Test.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/Test.java @@ -1,7 +1,7 @@ package com.alibaba.rocketmq.research; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class Test { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java index 978d47f5..973c1374 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Convert.java @@ -6,7 +6,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public abstract class Convert { // public String encode() { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java index bce3d22a..0a67cea5 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestConvert.java @@ -6,7 +6,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class TestConvert { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestFastjson.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestFastjson.java index 8ea46c63..cc8b78b2 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestFastjson.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestFastjson.java @@ -5,7 +5,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class TestFastjson { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java index 372a6bf4..fe9df1c6 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java @@ -3,7 +3,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class TestGson { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/logback/LogbackTest.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/logback/LogbackTest.java index 8cbf044f..9cc481ea 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/logback/LogbackTest.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/logback/LogbackTest.java @@ -8,7 +8,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class LogbackTest { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/mix/Test1.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/mix/Test1.java index 2ea69099..1c656c59 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/mix/Test1.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/mix/Test1.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.research.mix; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class Test1 { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/Connection.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/Connection.java index d9e7f06c..98450d1a 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/Connection.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/Connection.java @@ -20,7 +20,7 @@ /** * 一个Socket连接对象,Client与Server通用 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class Connection { private static final int ReadMaxBufferSize = 1024 * 1024 * 4; diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/DefaultRPCClient.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/DefaultRPCClient.java index a326bc9a..9f410fc5 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/DefaultRPCClient.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/DefaultRPCClient.java @@ -18,7 +18,7 @@ /** * 客户端实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class DefaultRPCClient implements RPCClient { // private Connection connection; diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/DefaultRPCServer.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/DefaultRPCServer.java index 7830879c..d21f649b 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/DefaultRPCServer.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/DefaultRPCServer.java @@ -26,7 +26,7 @@ /** * 服务端实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class DefaultRPCServer implements RPCServer { private final int listenPort; diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/LinkedByteBufferList.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/LinkedByteBufferList.java index 0a993970..c7c22a75 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/LinkedByteBufferList.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/LinkedByteBufferList.java @@ -11,7 +11,7 @@ /** * 针对写优化的ByteBuffer序列 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class LinkedByteBufferList { class ByteBufferNode { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/RPCClient.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/RPCClient.java index edf6ec5f..506a45e7 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/RPCClient.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/RPCClient.java @@ -10,7 +10,7 @@ /** * 客户端接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface RPCClient { public void start(); diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/Client.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/Client.java index adc2ae9f..72357151 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/Client.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/Client.java @@ -13,7 +13,7 @@ /** * 简单功能测试,Client端 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class Client { public static void main(String[] args) { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/MTClient.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/MTClient.java index 15eeb385..026473e9 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/MTClient.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/MTClient.java @@ -16,7 +16,7 @@ /** * 多线程客户端,做性能压测 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MTClient { private static byte[] buildMessage(final int size) { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/Server.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/Server.java index 868717fe..61d8139e 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/Server.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/rpc/benchmark/Server.java @@ -15,7 +15,7 @@ /** * 简单功能测试,Server端 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class Server { static class ServerRPCProcessor implements RPCProcessor { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/store/MessageStoreTestObject.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/store/MessageStoreTestObject.java index cfa3d651..5d248d63 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/store/MessageStoreTestObject.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/store/MessageStoreTestObject.java @@ -16,7 +16,7 @@ /** * 测试存储层,简单封装 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class MessageStoreTestObject { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/storeha/BrokerMaster.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/storeha/BrokerMaster.java index b02cc892..8137930a 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/storeha/BrokerMaster.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/storeha/BrokerMaster.java @@ -14,7 +14,7 @@ /** * HA测试 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class BrokerMaster { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/storeha/BrokerSlave.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/storeha/BrokerSlave.java index 3cced51a..75a33348 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/storeha/BrokerSlave.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/storeha/BrokerSlave.java @@ -11,7 +11,7 @@ /** * HA测试 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class BrokerSlave { diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AllocateMapedFileService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AllocateMapedFileService.java index 16a1f6f3..597174e2 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AllocateMapedFileService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AllocateMapedFileService.java @@ -20,7 +20,7 @@ /** * 预分配MapedFile服务 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class AllocateMapedFileService extends ServiceThread { class AllocateRequest implements Comparable { diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageCallback.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageCallback.java index 6deeb3e1..c9b3d0b4 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageCallback.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageCallback.java @@ -9,7 +9,7 @@ /** * 写入消息的回调接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface AppendMessageCallback { diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageResult.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageResult.java index 7d973c58..e5dd7222 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageResult.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageResult.java @@ -6,7 +6,7 @@ /** * 向物理队列写入消息返回结果 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class AppendMessageResult { // 返回码 diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageStatus.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageStatus.java index 8e8aeb0f..2820d6e9 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageStatus.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/AppendMessageStatus.java @@ -6,7 +6,7 @@ /** * 向物理队列写消息返回结果码 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public enum AppendMessageStatus { // 成功追加消息 diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java index d8786fd9..da584de0 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/CommitLog.java @@ -31,7 +31,7 @@ /** * CommitLog实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class CommitLog { private static final Logger log = LoggerFactory.getLogger(MixAll.StoreLoggerName); diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ConsumeQueue.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ConsumeQueue.java index 694bdb04..4c3587dd 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ConsumeQueue.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ConsumeQueue.java @@ -16,7 +16,7 @@ /** * 消费队列实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class ConsumeQueue { private static final Logger log = LoggerFactory.getLogger(MixAll.StoreLoggerName); diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageFilter.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageFilter.java index f581bec9..4fe2d7f5 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageFilter.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageFilter.java @@ -9,7 +9,7 @@ /** * 消息过滤规则实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class DefaultMessageFilter implements MessageFilter { diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java index 71f130c7..7ad8b2a2 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DefaultMessageStore.java @@ -35,7 +35,7 @@ /** * 存储层默认实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class DefaultMessageStore implements MessageStore { private static final Logger log = LoggerFactory.getLogger(MixAll.StoreLoggerName); diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DispatchRequest.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DispatchRequest.java index b0348892..39624560 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DispatchRequest.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/DispatchRequest.java @@ -6,7 +6,7 @@ /** * 分发消息位置信息到逻辑队列和索引服务 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class DispatchRequest { private final String topic; diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/GetMessageResult.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/GetMessageResult.java index 4468e9c2..c50b6532 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/GetMessageResult.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/GetMessageResult.java @@ -11,7 +11,7 @@ /** * 访问消息返回结果 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class GetMessageResult { // 枚举变量,取消息结果 diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/GetMessageStatus.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/GetMessageStatus.java index d30f976f..cf5890fa 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/GetMessageStatus.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/GetMessageStatus.java @@ -6,7 +6,7 @@ /** * 访问消息返回的状态码 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public enum GetMessageStatus { // 找到消息 diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFile.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFile.java index 35ece78b..4e0384b7 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFile.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFile.java @@ -27,7 +27,7 @@ /** * Pagecache文件访问封装 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MapedFile extends ReferenceResource { private static final Logger log = LoggerFactory.getLogger(MixAll.StoreLoggerName); diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFileQueue.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFileQueue.java index 688ebea4..a5deb57a 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFileQueue.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MapedFileQueue.java @@ -22,7 +22,7 @@ * 存储队列,数据定时删除,无限增长
* 队列是由多个文件组成 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MapedFileQueue { private static final Logger log = LoggerFactory.getLogger(MixAll.StoreLoggerName); diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageExtBrokerInner.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageExtBrokerInner.java index a4d29df2..fc564377 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageExtBrokerInner.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageExtBrokerInner.java @@ -8,7 +8,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class MessageExtBrokerInner extends MessageExt { diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageFilter.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageFilter.java index f5b5f025..013a29a8 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageFilter.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageFilter.java @@ -9,7 +9,7 @@ /** * 消息过滤接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface MessageFilter { public boolean isMessageMatched(final SubscriptionData subscriptionData, final long tagsCode); diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageStore.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageStore.java index 7a905dff..8d17e22c 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageStore.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/MessageStore.java @@ -12,7 +12,7 @@ /** * 存储层对外提供的接口 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface MessageStore { diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/PutMessageResult.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/PutMessageResult.java index 772e2cad..80170239 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/PutMessageResult.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/PutMessageResult.java @@ -6,7 +6,7 @@ /** * 写入消息返回结果 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class PutMessageResult { private PutMessageStatus putMessageStatus; diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/PutMessageStatus.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/PutMessageStatus.java index d6a03b8e..0eda6df5 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/PutMessageStatus.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/PutMessageStatus.java @@ -4,7 +4,7 @@ package com.alibaba.rocketmq.store; /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public enum PutMessageStatus { diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/QueryMessageResult.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/QueryMessageResult.java index e0fca5d3..d69c09ba 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/QueryMessageResult.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/QueryMessageResult.java @@ -10,7 +10,7 @@ /** * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class QueryMessageResult { private long indexLastUpdateTimestamp; diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ReferenceResource.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ReferenceResource.java index 8beb3e08..38a8ab9b 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ReferenceResource.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ReferenceResource.java @@ -9,7 +9,7 @@ /** * 引用计数基类,类似于C++智能指针实现 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public abstract class ReferenceResource { protected final AtomicLong refCount = new AtomicLong(1); diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/RunningFlags.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/RunningFlags.java index a2eac59c..4131af2c 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/RunningFlags.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/RunningFlags.java @@ -6,7 +6,7 @@ /** * 存储模型运行过程的状态位 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class RunningFlags { // 禁止读权限 diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/SelectMapedBufferResult.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/SelectMapedBufferResult.java index 8343686d..297fe90d 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/SelectMapedBufferResult.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/SelectMapedBufferResult.java @@ -9,7 +9,7 @@ /** * 查询Pagecache返回结果 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class SelectMapedBufferResult { // 从队列中哪个绝对Offset开始 diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/StoreCheckpoint.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/StoreCheckpoint.java index 54590acc..77259f48 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/StoreCheckpoint.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/StoreCheckpoint.java @@ -20,7 +20,7 @@ /** * 记录存储模型最终一致的时间点 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class StoreCheckpoint { private static final Logger log = LoggerFactory.getLogger(MixAll.StoreLoggerName); diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/StoreStatsService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/StoreStatsService.java index c12459f0..619597dd 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/StoreStatsService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/StoreStatsService.java @@ -19,7 +19,7 @@ /** * 存储层内部统计服务 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class StoreStatsService extends ServiceThread { static class CallSnapshot { diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/BrokerRole.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/BrokerRole.java index cd6619b1..e2bba34b 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/BrokerRole.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/BrokerRole.java @@ -6,7 +6,7 @@ /** * Broker角色 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public enum BrokerRole { // 异步复制Master diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/FlushDiskType.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/FlushDiskType.java index 8bc9add2..145ddeff 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/FlushDiskType.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/FlushDiskType.java @@ -6,7 +6,7 @@ /** * 刷盘方式 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public enum FlushDiskType { /** diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java index 6cb734ba..8920ca15 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/config/MessageStoreConfig.java @@ -12,7 +12,7 @@ /** * 存储层配置文件类 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MessageStoreConfig { // CommitLog存储目录 diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/HAConnection.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/HAConnection.java index 552c7c43..f4efa599 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/HAConnection.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/HAConnection.java @@ -21,7 +21,7 @@ /** * HA服务,Master用来向Slave Push数据,并接收Slave应答 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class HAConnection { private static final Logger log = LoggerFactory.getLogger(MixAll.StoreLoggerName); @@ -41,7 +41,7 @@ public class HAConnection { /** * 读取Slave请求,一般为push ack * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ class ReadSocketService extends ServiceThread { private static final int ReadMaxBufferSize = 1024 * 1024; @@ -179,7 +179,7 @@ public String getServiceName() { /** * 向Slave写入数据 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ class WriteSocketService extends ServiceThread { private final Selector selector; diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/HAService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/HAService.java index d17ebe22..5d3e378b 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/HAService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/HAService.java @@ -33,7 +33,7 @@ /** * HA服务,负责同步双写,异步复制功能 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class HAService { private static final Logger log = LoggerFactory.getLogger(MixAll.StoreLoggerName); diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/WaitNotifyObject.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/WaitNotifyObject.java index 70992e63..dacc3057 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/WaitNotifyObject.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/ha/WaitNotifyObject.java @@ -9,7 +9,7 @@ /** * 用来做线程之间异步通知 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class WaitNotifyObject { // 是否已经被Notify过 diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexFile.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexFile.java index 654d4e93..10e1bdc1 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexFile.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexFile.java @@ -20,7 +20,7 @@ /** * 存储具体消息索引信息的文件 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class IndexFile { private static final Logger log = LoggerFactory.getLogger(MixAll.StoreLoggerName); diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexHeader.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexHeader.java index 3475d11f..799c65c2 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexHeader.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexHeader.java @@ -11,7 +11,7 @@ /** * 索引文件头 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class IndexHeader { public static final int INDEX_HEADER_SIZE = 40; diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java index b0a3e92d..9219789a 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/IndexService.java @@ -29,7 +29,7 @@ /** * 消息索引服务 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class IndexService extends ServiceThread { private static final Logger log = LoggerFactory.getLogger(MixAll.StoreLoggerName); diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/QueryOffsetResult.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/QueryOffsetResult.java index 03948030..106bc9d6 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/QueryOffsetResult.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/index/QueryOffsetResult.java @@ -9,7 +9,7 @@ /** * 根据索引查询消息,返回结果 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class QueryOffsetResult { private final List phyOffsets; diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/schedule/ScheduleMessageService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/schedule/ScheduleMessageService.java index 52996b55..46ef4d38 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/schedule/ScheduleMessageService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/schedule/ScheduleMessageService.java @@ -31,7 +31,7 @@ /** * 定时消息服务 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class ScheduleMessageService { diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionCheckExecuter.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionCheckExecuter.java index f09ec98e..090adb4d 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionCheckExecuter.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionCheckExecuter.java @@ -6,7 +6,7 @@ /** * 存储层向Producer回查事务状态 * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface TransactionCheckExecuter { public void gotoCheck(// diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java index 1297b460..001700ed 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java @@ -31,7 +31,7 @@ * clOffset - Commit Log Offset
* tsOffset - Transaction State Table Offset * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr * */ public class TransactionStateService { diff --git a/rocketmq-store/src/test/java/com/alibaba/rocketmq/store/DefaultMessageStoreTest.java b/rocketmq-store/src/test/java/com/alibaba/rocketmq/store/DefaultMessageStoreTest.java index 905e31be..798fd1aa 100644 --- a/rocketmq-store/src/test/java/com/alibaba/rocketmq/store/DefaultMessageStoreTest.java +++ b/rocketmq-store/src/test/java/com/alibaba/rocketmq/store/DefaultMessageStoreTest.java @@ -16,7 +16,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class DefaultMessageStoreTest { // 队列个数 diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java index e8d67237..17875aec 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java @@ -13,7 +13,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MQAdminStartup { private static List subCommandList = new ArrayList(); diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java index 030a34ba..e8773aa5 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/SubCommand.java @@ -5,7 +5,7 @@ /** * - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public interface SubCommand { public String commandName(); diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/broker/BrokerSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/broker/BrokerSubCommand.java index f5fd4d5f..cc01b536 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/broker/BrokerSubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/broker/BrokerSubCommand.java @@ -7,7 +7,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class BrokerSubCommand implements SubCommand { diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/cluster/ClusterSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/cluster/ClusterSubCommand.java index d7fd254d..e92594d3 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/cluster/ClusterSubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/cluster/ClusterSubCommand.java @@ -4,7 +4,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class ClusterSubCommand implements SubCommand { diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/connection/ConnectionSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/connection/ConnectionSubCommand.java index 5d8b8fdf..210a13fe 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/connection/ConnectionSubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/connection/ConnectionSubCommand.java @@ -7,7 +7,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class ConnectionSubCommand implements SubCommand { diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/message/MessageSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/message/MessageSubCommand.java index 9b083d23..8863ebae 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/message/MessageSubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/message/MessageSubCommand.java @@ -4,7 +4,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class MessageSubCommand implements SubCommand { diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/namesrv/NamesrvSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/namesrv/NamesrvSubCommand.java index 694884cf..4fd1b02d 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/namesrv/NamesrvSubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/namesrv/NamesrvSubCommand.java @@ -4,7 +4,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class NamesrvSubCommand implements SubCommand { diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/stats/StatsSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/stats/StatsSubCommand.java index 3e84d8d0..5040e6d4 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/stats/StatsSubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/stats/StatsSubCommand.java @@ -4,7 +4,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class StatsSubCommand implements SubCommand { diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicSubCommand.java index e9895ace..1128912c 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicSubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/topic/TopicSubCommand.java @@ -4,7 +4,7 @@ /** - * @author vintage.wang@gmail.com shijia.wxr@taobao.com + * @author shijia.wxr */ public class TopicSubCommand implements SubCommand { From 82d1888a4022edd903b2584527bd8919cf4fcc3a Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sat, 25 May 2013 13:50:38 +0800 Subject: [PATCH 059/894] =?UTF-8?q?#31=20=E5=88=9B=E5=BB=BA=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E8=B6=85=E6=97=B6=E6=83=85=E5=86=B5=E4=B8=8B=EF=BC=8C?= =?UTF-8?q?=E5=85=B3=E9=97=ADChannel=E6=96=B9=E6=B3=95=E6=9C=89=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README | 0 .../common/protocol/route/TopicRouteData.java | 42 +++++++++++++++++++ .../remoting/netty/NettyRemotingClient.java | 6 +-- .../rocketmq/research/gson/TestGson.java | 4 +- 4 files changed, 46 insertions(+), 6 deletions(-) delete mode 100644 README diff --git a/README b/README deleted file mode 100644 index e69de29b..00000000 diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java index 498620c9..2d7b5cac 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/route/TopicRouteData.java @@ -55,4 +55,46 @@ public String toString() { return "TopicRouteData [queueDatas=" + queueDatas + ", brokerDatas=" + brokerDatas + ", orderTopicConf=" + orderTopicConf + "]"; } + + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((brokerDatas == null) ? 0 : brokerDatas.hashCode()); + result = prime * result + ((orderTopicConf == null) ? 0 : orderTopicConf.hashCode()); + result = prime * result + ((queueDatas == null) ? 0 : queueDatas.hashCode()); + return result; + } + + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + TopicRouteData other = (TopicRouteData) obj; + if (brokerDatas == null) { + if (other.brokerDatas != null) + return false; + } + else if (!brokerDatas.equals(other.brokerDatas)) + return false; + if (orderTopicConf == null) { + if (other.orderTopicConf != null) + return false; + } + else if (!orderTopicConf.equals(other.orderTopicConf)) + return false; + if (queueDatas == null) { + if (other.queueDatas != null) + return false; + } + else if (!queueDatas.equals(other.queueDatas)) + return false; + return true; + } } diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java index e72805a4..3c5f9408 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingClient.java @@ -418,8 +418,8 @@ private Channel createChannel(final String addr) throws InterruptedException { } } else { - log.error("connect {} in {}ms timeout", addr, this.nettyClientConfig.getConnectTimeoutMillis()); - channel.close().sync(); + log.error("connect {} in {}ms timeout", addr, this.nettyClientConfig.getConnectTimeoutMillis()); + channelFuture.channel(); return null; } @@ -527,7 +527,7 @@ public void closeChannel(final Channel channel) { if (removeItemFromTable) { this.channelTables.remove(addrRemote); log.info("closeChannel: the channel[{}] was removed from channel table", addrRemote); -// channel.close().sync(); + // channel.close().sync(); } } catch (Exception e) { diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java index fe9df1c6..bf088e05 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/TestGson.java @@ -1,7 +1,5 @@ package com.alibaba.rocketmq.research.gson; - - /** * @author shijia.wxr */ @@ -33,6 +31,6 @@ public static void main(String[] args) { // System.out.println(cb); // String json2 = gson.toJson(cb); // System.out.println(json2); - + } } From d1cd725dbbc1f902d8060910564dcf76ff6b8fa8 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sat, 25 May 2013 14:11:29 +0800 Subject: [PATCH 060/894] =?UTF-8?q?#4=20=E6=95=B4=E7=90=86=E6=B3=A8?= =?UTF-8?q?=E9=87=8A=EF=BC=8C=E4=B8=BA=E5=AF=B9=E8=B1=A1=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/consumer/DefaultMQPullConsumer.java | 6 +++--- .../client/consumer/DefaultMQPushConsumer.java | 10 +++++----- .../client/producer/DefaultMQProducer.java | 6 +++--- .../remoting/protocol/RemotingSerializable.java | 16 +++++++++++++++- .../alibaba/rocketmq/research/gson/Contact.java | 4 +--- 5 files changed, 27 insertions(+), 15 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java index 7608a682..07b3b5c4 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java @@ -59,7 +59,7 @@ public class DefaultMQPullConsumer implements MQPullConsumer { */ private Set registerTopics = new HashSet(); - private final DefaultMQPullConsumerImpl defaultMQPullConsumerImpl = new DefaultMQPullConsumerImpl( + private final transient DefaultMQPullConsumerImpl defaultMQPullConsumerImpl = new DefaultMQPullConsumerImpl( this); @@ -104,8 +104,8 @@ public long getEarliestMsgStoreTime(MessageQueue mq) throws MQClientException { @Override - public MessageExt viewMessage(String msgId) throws RemotingException, MQBrokerException, - InterruptedException, MQClientException { + public MessageExt viewMessage(String msgId) throws RemotingException, MQBrokerException, InterruptedException, + MQClientException { return this.defaultMQPullConsumerImpl.viewMessage(msgId); } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java index e427728b..16bc7b0c 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java @@ -22,7 +22,7 @@ /** - * 被动Consumer + * 类似于Broker Push消息到Consumer方式,但实际仍然是Consumer内部后台从Broker Pull消息 * * @author shijia.wxr * @@ -69,8 +69,8 @@ public class DefaultMQPushConsumer implements MQPushConsumer { */ private int consumeMessageBatchMaxSize = 1; - private final DefaultMQPushConsumerImpl defaultMQPushConsumerImpl = - new DefaultMQPushConsumerImpl(this); + private final transient DefaultMQPushConsumerImpl defaultMQPushConsumerImpl = new DefaultMQPushConsumerImpl( + this); public DefaultMQPushConsumer() { @@ -126,8 +126,8 @@ public long getEarliestMsgStoreTime(MessageQueue mq) throws MQClientException { @Override - public MessageExt viewMessage(String msgId) throws RemotingException, MQBrokerException, - InterruptedException, MQClientException { + public MessageExt viewMessage(String msgId) throws RemotingException, MQBrokerException, InterruptedException, + MQClientException { // TODO Auto-generated method stub return null; } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/DefaultMQProducer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/DefaultMQProducer.java index 22168fa3..9d1e9248 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/DefaultMQProducer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/DefaultMQProducer.java @@ -60,7 +60,7 @@ public class DefaultMQProducer implements MQProducer { */ private int maxMessageSize = 1024 * 512; - protected final DefaultMQProducerImpl defaultMQProducerImpl = new DefaultMQProducerImpl(this); + protected final transient DefaultMQProducerImpl defaultMQProducerImpl = new DefaultMQProducerImpl(this); public DefaultMQProducer() { @@ -129,8 +129,8 @@ public long getEarliestMsgStoreTime(MessageQueue mq) throws MQClientException { @Override - public MessageExt viewMessage(String msgId) throws RemotingException, MQBrokerException, - InterruptedException, MQClientException { + public MessageExt viewMessage(String msgId) throws RemotingException, MQBrokerException, InterruptedException, + MQClientException { return this.defaultMQProducerImpl.viewMessage(msgId); } diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java index c5a91416..717218a8 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/protocol/RemotingSerializable.java @@ -4,7 +4,7 @@ /** - * 复杂对象的序列化,利用gson来实现 + * 复杂对象的序列化,利用json来实现 * * @author shijia.wxr */ @@ -14,6 +14,11 @@ public String toJson() { } + public static String toJson(final Object obj) { + return JSON.toJSONString(obj); + } + + public static T fromJson(String json, Class classOfT) { return JSON.parseObject(json, classOfT); } @@ -28,6 +33,15 @@ public byte[] encode() { } + public static byte[] encode(final Object obj) { + final String json = toJson(obj); + if (json != null) { + return json.getBytes(); + } + return null; + } + + public static T decode(final byte[] data, Class classOfT) { final String json = new String(data); return fromJson(json, classOfT); diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java index 6ab8b43d..cbebc389 100644 --- a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/gson/Contact.java @@ -1,13 +1,11 @@ package com.alibaba.rocketmq.research.gson; - - public class Contact { public final static String SUB_ALL = "*"; private String name; private int age; private double weight; - private String school; + private String school; private SexType sex; From 78c75aeafbaa1e32a9b492c51b5cabb0ef80b7cc Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sat, 25 May 2013 14:31:30 +0800 Subject: [PATCH 061/894] =?UTF-8?q?#33=20=E4=BF=AE=E6=94=B9=E6=B6=88?= =?UTF-8?q?=E6=81=AFID=E7=BB=84=E6=88=90=EF=BC=8C=E5=8E=BB=E9=99=A4PID?= =?UTF-8?q?=EF=BC=8C=E5=90=AF=E5=8A=A8=E6=97=B6=E9=97=B4=E6=88=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rocketmq/client/impl/factory/MQClientFactory.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java index 757768ca..77824a29 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java @@ -124,15 +124,10 @@ public MQClientFactory(MQClientConfig mQClientConfig, int factoryIndex) { private String buildMQClientId() { StringBuilder sb = new StringBuilder(); sb.append(this.mQClientConfig.getClientIP()); - sb.append("@"); - sb.append(this.mQClientConfig.getInstanceName()); - sb.append("@"); - - sb.append(MixAll.CURRENT_JVM_PID); sb.append("@"); + sb.append(this.mQClientConfig.getInstanceName()); - sb.append(this.bootTimestamp); return sb.toString(); } From 7a5b3895b7a88875247e21bb33d83fa6d5ff0af2 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sat, 25 May 2013 14:56:23 +0800 Subject: [PATCH 062/894] =?UTF-8?q?#44=20=E5=8D=95=E6=9C=BA=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=90=AF=E5=8A=A8=E5=A4=9A=E4=B8=AAJVM=EF=BC=8C?= =?UTF-8?q?=E5=BF=85=E9=A1=BB=E6=8C=87=E5=AE=9A=E4=B8=8D=E5=90=8C=E7=9A=84?= =?UTF-8?q?Instance=20Name=EF=BC=8C=E5=A6=82=E6=9E=9C=E4=B8=8D=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E5=88=99=E6=8A=A5=E9=94=99=20@zhongl?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/impl/factory/MQClientFactory.java | 40 ++++++++++++++++++- .../rocketmq/research/udp/UDPTest.java | 19 +++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 rocketmq-research/src/main/java/com/alibaba/rocketmq/research/udp/UDPTest.java diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java index 77824a29..98b4ba9c 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java @@ -3,6 +3,8 @@ */ package com.alibaba.rocketmq.client.impl.factory; +import java.net.DatagramSocket; +import java.net.SocketException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -96,8 +98,12 @@ public Thread newThread(Runnable r) { } }); + // 处理服务器主动发来的请求 private final ClientRemotingProcessor clientRemotingProcessor; + // 监听一个UDP端口,用来防止同一个Factory启动多份(有可能分布在多个JVM中) + private DatagramSocket datagramSocket; + public MQClientFactory(MQClientConfig mQClientConfig, int factoryIndex) { this.mQClientConfig = mQClientConfig; @@ -121,6 +127,25 @@ public MQClientFactory(MQClientConfig mQClientConfig, int factoryIndex) { } + private void makesureInstanceNameIsOnly(final String instanceName) throws MQClientException { + int udpPort = 33333; + + int value = instanceName.hashCode(); + if (value < 0) { + value = Math.abs(value); + } + + udpPort += value % 10000; + + try { + this.datagramSocket = new DatagramSocket(udpPort); + } + catch (SocketException e) { + throw new MQClientException("instance name is a duplicate one, please set a new name", null); + } + } + + private String buildMQClientId() { StringBuilder sb = new StringBuilder(); sb.append(this.mQClientConfig.getClientIP()); @@ -179,10 +204,12 @@ public void run() { } - public void start() { + public void start() throws MQClientException { synchronized (this) { switch (this.serviceState) { case CREATE_JUST: + this.makesureInstanceNameIsOnly(this.mQClientConfig.getInstanceName()); + this.serviceState = ServiceState.RUNNING; // TODO if (null == this.mQClientConfig.getNamesrvAddr()) { @@ -221,6 +248,12 @@ public void shutdown() { // TODO this.scheduledExecutorService.shutdown(); this.mQClientAPIImpl.shutdown(); + + if (this.datagramSocket != null) { + this.datagramSocket.close(); + this.datagramSocket = null; + } + break; case SHUTDOWN_ALREADY: break; @@ -716,4 +749,9 @@ public MQAdminImpl getMQAdminImpl() { public String getClientId() { return clientId; } + + + public long getBootTimestamp() { + return bootTimestamp; + } } diff --git a/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/udp/UDPTest.java b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/udp/UDPTest.java new file mode 100644 index 00000000..517e8852 --- /dev/null +++ b/rocketmq-research/src/main/java/com/alibaba/rocketmq/research/udp/UDPTest.java @@ -0,0 +1,19 @@ +package com.alibaba.rocketmq.research.udp; + +import java.net.DatagramSocket; +import java.net.SocketException; + + +/** + * @author shijia.wxr + */ +public class UDPTest { + + public static void main(String[] args) throws SocketException { + DatagramSocket datagramSocket = new DatagramSocket(4500); + System.out.println("OK 4500"); + + new DatagramSocket(4500); + System.out.println("OK 4500"); + } +} From 4017541932cc9de09e357af0e178747d9d0b999f Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sat, 25 May 2013 14:59:03 +0800 Subject: [PATCH 063/894] =?UTF-8?q?fixed=20#44=20=E5=8D=95=E6=9C=BA?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=90=AF=E5=8A=A8=E5=A4=9A=E4=B8=AAJVM?= =?UTF-8?q?=EF=BC=8C=E5=BF=85=E9=A1=BB=E6=8C=87=E5=AE=9A=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E7=9A=84Instance=20Name=EF=BC=8C=E5=A6=82=E6=9E=9C=E4=B8=8D?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E5=88=99=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alibaba/rocketmq/client/impl/factory/MQClientFactory.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java index 98b4ba9c..db88a3f3 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java @@ -123,7 +123,7 @@ public MQClientFactory(MQClientConfig mQClientConfig, int factoryIndex) { this.mQAdminImpl = new MQAdminImpl(this); - log.info("created a new client fatory, ", this.factoryIndex); + log.info("created a new client fatory, FactoryIndex: {} ClinetID: {}", this.factoryIndex, this.clientId); } @@ -141,7 +141,7 @@ private void makesureInstanceNameIsOnly(final String instanceName) throws MQClie this.datagramSocket = new DatagramSocket(udpPort); } catch (SocketException e) { - throw new MQClientException("instance name is a duplicate one, please set a new name", null); + throw new MQClientException("instance name is a duplicate one, please set a new name", e); } } From ca66b6a9695765f3efb1823962f47a8f0b1711d7 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sat, 25 May 2013 15:31:15 +0800 Subject: [PATCH 064/894] =?UTF-8?q?#18=20=E5=A2=9E=E5=8A=A0=E4=B8=A4?= =?UTF-8?q?=E4=B8=AA=E5=AD=90=E5=91=BD=E4=BB=A4=EF=BC=8C=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?Producer=E3=80=81Consumer=E5=86=85=E9=83=A8=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/impl/factory/MQClientFactory.java | 4 +-- .../rocketmq/tools/MQAdminStartup.java | 33 +++++++++++++++---- .../tools/consumer/ConsumerSubCommand.java | 31 +++++++++++++++++ .../tools/producer/ProducerSubCommand.java | 31 +++++++++++++++++ 4 files changed, 91 insertions(+), 8 deletions(-) create mode 100644 rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/consumer/ConsumerSubCommand.java create mode 100644 rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/producer/ProducerSubCommand.java diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java index db88a3f3..fdb13801 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java @@ -53,7 +53,6 @@ * 客户端Factory类,用来管理Producer与Consumer * * @author shijia.wxr - * */ public class MQClientFactory { private ServiceState serviceState = ServiceState.CREATE_JUST; @@ -141,7 +140,8 @@ private void makesureInstanceNameIsOnly(final String instanceName) throws MQClie this.datagramSocket = new DatagramSocket(udpPort); } catch (SocketException e) { - throw new MQClientException("instance name is a duplicate one, please set a new name", e); + throw new MQClientException( + "instance name is a duplicate one[" + udpPort + "], please set a new name", e); } } diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java index 17875aec..cb6ea904 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/MQAdminStartup.java @@ -6,8 +6,10 @@ import com.alibaba.rocketmq.tools.broker.BrokerSubCommand; import com.alibaba.rocketmq.tools.cluster.ClusterSubCommand; import com.alibaba.rocketmq.tools.connection.ConnectionSubCommand; +import com.alibaba.rocketmq.tools.consumer.ConsumerSubCommand; import com.alibaba.rocketmq.tools.message.MessageSubCommand; import com.alibaba.rocketmq.tools.namesrv.NamesrvSubCommand; +import com.alibaba.rocketmq.tools.producer.ProducerSubCommand; import com.alibaba.rocketmq.tools.stats.StatsSubCommand; import com.alibaba.rocketmq.tools.topic.TopicSubCommand; @@ -20,9 +22,11 @@ public class MQAdminStartup { static { subCommandList.add(new TopicSubCommand()); - subCommandList.add(new BrokerSubCommand()); subCommandList.add(new ClusterSubCommand()); + subCommandList.add(new BrokerSubCommand()); subCommandList.add(new NamesrvSubCommand()); + subCommandList.add(new ProducerSubCommand()); + subCommandList.add(new ConsumerSubCommand()); subCommandList.add(new ConnectionSubCommand()); subCommandList.add(new MessageSubCommand()); subCommandList.add(new StatsSubCommand()); @@ -40,6 +44,17 @@ private static void printHelp() { } + private static SubCommand findSubCommand(final String name) { + for (SubCommand cmd : subCommandList) { + if (cmd.commandName().equals(name)) { + return cmd; + } + } + + return null; + } + + private static String[] parseSubArgs(String[] args) { if (args.length > 1) { String[] result = new String[args.length - 1]; @@ -56,16 +71,22 @@ public static void main(String[] args) { switch (args.length) { case 0: + case 1: printHelp(); break; - case 1: + case 2: if (args[0].equals("help")) { - printHelp(); - } - else { - + SubCommand cmd = findSubCommand(args[1]); + if (cmd != null) { + cmd.printHelp(); + } + break; } default: + SubCommand cmd = findSubCommand(args[0]); + if (cmd != null) { + cmd.execute(parseSubArgs(args)); + } break; } } diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/consumer/ConsumerSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/consumer/ConsumerSubCommand.java new file mode 100644 index 00000000..2129553c --- /dev/null +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/consumer/ConsumerSubCommand.java @@ -0,0 +1,31 @@ +package com.alibaba.rocketmq.tools.consumer; + +import com.alibaba.rocketmq.tools.SubCommand; + + +/** + * @author shijia.wxr + */ +public class ConsumerSubCommand implements SubCommand { + + @Override + public String commandName() { + return "consumer"; + } + + + @Override + public String commandDesc() { + return "Insepect data of consumer"; + } + + + @Override + public void printHelp() { + } + + + @Override + public void execute(String[] args) { + } +} diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/producer/ProducerSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/producer/ProducerSubCommand.java new file mode 100644 index 00000000..045414ef --- /dev/null +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/producer/ProducerSubCommand.java @@ -0,0 +1,31 @@ +package com.alibaba.rocketmq.tools.producer; + +import com.alibaba.rocketmq.tools.SubCommand; + + +/** + * @author shijia.wxr + */ +public class ProducerSubCommand implements SubCommand { + + @Override + public String commandName() { + return "producer"; + } + + + @Override + public String commandDesc() { + return "Insepect data of producer"; + } + + + @Override + public void printHelp() { + } + + + @Override + public void execute(String[] args) { + } +} From 557dddee3705d73bb2c157e0532c8df3abd4d84c Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sat, 25 May 2013 19:32:18 +0800 Subject: [PATCH 065/894] =?UTF-8?q?#1=20=E5=BC=80=E5=8F=91PushConsumer?= =?UTF-8?q?=EF=BC=8C=E5=9F=BA=E6=9C=AC=E5=BC=80=E5=8F=91=E6=A1=86=E6=9E=B6?= =?UTF-8?q?OK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../consumer/DefaultMQPushConsumer.java | 17 +++ .../consumer/DefaultMQPullConsumerImpl.java | 6 +- .../consumer/DefaultMQPushConsumerImpl.java | 111 +++++++++++++++++- .../client/impl/consumer/ProcessQueue.java | 37 ++++++ .../impl/consumer/PullMessageService.java | 24 +++- .../client/impl/consumer/PullRequest.java | 44 ++++++- .../client/impl/factory/MQClientFactory.java | 5 + .../tools/consumer/ConsumerSubCommand.java | 2 +- .../tools/producer/ProducerSubCommand.java | 2 +- 9 files changed, 234 insertions(+), 14 deletions(-) create mode 100644 rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/ProcessQueue.java diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java index 16bc7b0c..5d62afae 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPushConsumer.java @@ -68,6 +68,10 @@ public class DefaultMQPushConsumer implements MQPushConsumer { * 消费一批消息,最大数 */ private int consumeMessageBatchMaxSize = 1; + /** + * 拉消息,一次拉多少条 + */ + private int pullBatchSize = 32; private final transient DefaultMQPushConsumerImpl defaultMQPushConsumerImpl = new DefaultMQPushConsumerImpl( this); @@ -195,4 +199,17 @@ public List fetchSubscribeMessageQueues(String topic) throws MQCli // TODO Auto-generated method stub return null; } + + + // //////////////////////////////////////////////////////////////////////// + + public int getPullBatchSize() { + return pullBatchSize; + } + + + public void setPullBatchSize(int pullBatchSize) { + this.pullBatchSize = pullBatchSize; + } + } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java index 7be0eb41..cfb64676 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java @@ -34,8 +34,6 @@ /** - * 主动Consumer实现 - * * @author shijia.wxr */ public class DefaultMQPullConsumerImpl implements MQConsumerInner { @@ -334,8 +332,8 @@ public long fetchConsumeOffset(MessageQueue mq) throws RemotingException, MQBrok requestHeader.setConsumerGroup(this.defaultMQPullConsumer.getConsumerGroup()); requestHeader.setQueueId(mq.getQueueId()); - return this.mQClientFactory.getMQClientAPIImpl().queryConsumerOffset( - findBrokerResult.getBrokerAddr(), requestHeader, 1000 * 5); + return this.mQClientFactory.getMQClientAPIImpl().queryConsumerOffset(findBrokerResult.getBrokerAddr(), + requestHeader, 1000 * 5); } else { throw new MQClientException("The broker[" + mq.getBrokerName() + "] not exist", null); diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java index 867037ea..55a8aa7e 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java @@ -4,32 +4,45 @@ package com.alibaba.rocketmq.client.impl.consumer; import java.util.List; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import com.alibaba.rocketmq.client.QueryResult; import com.alibaba.rocketmq.client.consumer.DefaultMQPushConsumer; import com.alibaba.rocketmq.client.consumer.MQPushConsumer; +import com.alibaba.rocketmq.client.consumer.PullCallback; +import com.alibaba.rocketmq.client.consumer.PullResult; import com.alibaba.rocketmq.client.consumer.listener.MessageListener; import com.alibaba.rocketmq.client.exception.MQBrokerException; import com.alibaba.rocketmq.client.exception.MQClientException; +import com.alibaba.rocketmq.client.impl.CommunicationMode; import com.alibaba.rocketmq.client.impl.factory.MQClientFactory; import com.alibaba.rocketmq.common.MessageExt; import com.alibaba.rocketmq.common.MessageQueue; import com.alibaba.rocketmq.common.ServiceState; import com.alibaba.rocketmq.common.TopicFilterType; +import com.alibaba.rocketmq.common.protocol.heartbeat.ConsumeType; +import com.alibaba.rocketmq.common.protocol.heartbeat.MessageModel; +import com.alibaba.rocketmq.common.protocol.heartbeat.SubscriptionData; +import com.alibaba.rocketmq.common.sysflag.PullSysFlag; import com.alibaba.rocketmq.remoting.exception.RemotingException; /** - * * @author shijia.wxr - * */ -public class DefaultMQPushConsumerImpl implements MQPushConsumer { +public class DefaultMQPushConsumerImpl implements MQPushConsumer, MQConsumerInner { private final DefaultMQPushConsumer defaultMQPushConsumer; private ServiceState serviceState = ServiceState.CREATE_JUST; private MQClientFactory mQClientFactory; private PullAPIWrapper pullAPIWrapper; + /** + * 消息存储相关 + */ + private ConcurrentHashMap processQueueTable = + new ConcurrentHashMap(64); + public DefaultMQPushConsumerImpl(DefaultMQPushConsumer defaultMQPushConsumer) { this.defaultMQPushConsumer = defaultMQPushConsumer; @@ -86,8 +99,8 @@ public long getEarliestMsgStoreTime(MessageQueue mq) throws MQClientException { @Override - public MessageExt viewMessage(String msgId) throws RemotingException, MQBrokerException, - InterruptedException, MQClientException { + public MessageExt viewMessage(String msgId) throws RemotingException, MQBrokerException, InterruptedException, + MQClientException { // TODO Auto-generated method stub return null; } @@ -146,6 +159,94 @@ public void suspend() { @Override public void resume() { // TODO Auto-generated method stub + } + + + @Override + public String getGroupName() { + return null; + } + + + @Override + public MessageModel getMessageModel() { + return null; + } + + + @Override + public ConsumeType getConsumeType() { + return ConsumeType.CONSUME_PASSIVELY; + } + + + @Override + public Set getMQSubscriptions() { + return null; + } + + /** + * 单线程调用 + */ + private ProcessQueue getAndCreateProcessQueue(final MessageQueue mq) { + ProcessQueue pq = this.processQueueTable.get(mq); + if (null == pq) { + pq = new ProcessQueue(); + this.processQueueTable.put(mq, pq); + } + + return pq; + } + + + public void pullMessage(final PullRequest pullRequest) { + int sysFlag = PullSysFlag.buildSysFlag(// + false, // commitOffset + true, // suspend + false// subscription + ); + + PullCallback pullCallback = new PullCallback() { + + @Override + public void onSuccess(PullResult pullResult) { + } + + + @Override + public void onException(Throwable e) { + } + }; + + try { + this.pullAPIWrapper.pullKernelImpl(// + pullRequest.getMessageQueue(), // 1 + null, // 2 + pullRequest.getNextOffset(), // 3 + this.defaultMQPushConsumer.getPullBatchSize(), // 4 + sysFlag, // 5 + 0,// 6 + 1000 * 10, // 7 + 1000 * 20, // 8 + CommunicationMode.ASYNC, // 9 + pullCallback// 10 + ); + } + catch (MQClientException e) { + e.printStackTrace(); + } + catch (RemotingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + catch (MQBrokerException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/ProcessQueue.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/ProcessQueue.java new file mode 100644 index 00000000..517b2de9 --- /dev/null +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/ProcessQueue.java @@ -0,0 +1,37 @@ +package com.alibaba.rocketmq.client.impl.consumer; + +import java.util.TreeMap; +import java.util.concurrent.atomic.AtomicLong; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; + +import com.alibaba.rocketmq.common.MessageExt; + + +/** + * 正在被消费的队列,含消息 + * + * @author shijia.wxr + */ +public class ProcessQueue { + private volatile boolean locked = false; + private final ReadWriteLock lockTreeMap = new ReentrantReadWriteLock(); + private final TreeMap msgTreeMap = new TreeMap(); + private final AtomicLong msgCount = new AtomicLong(); + + + public boolean isLocked() { + return locked; + } + + + public void setLocked(boolean locked) { + this.locked = locked; + } + + + public TreeMap getMsgTreeMap() { + return msgTreeMap; + } + +} diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullMessageService.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullMessageService.java index b0f7ba3a..de2de4b5 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullMessageService.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullMessageService.java @@ -4,24 +4,41 @@ package com.alibaba.rocketmq.client.impl.consumer; import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ScheduledExecutorService; +import com.alibaba.rocketmq.client.impl.CommunicationMode; import com.alibaba.rocketmq.client.impl.factory.MQClientFactory; import com.alibaba.rocketmq.common.ServiceThread; +import com.alibaba.rocketmq.common.sysflag.PullSysFlag; /** * 长轮询拉消息服务,单线程异步拉取 * * @author shijia.wxr - * */ public class PullMessageService extends ServiceThread { private final LinkedBlockingQueue pullRequestQueue = new LinkedBlockingQueue(); private final MQClientFactory mQClientFactory; + // 与Factory对象共用一个定时对象 + private final ScheduledExecutorService scheduledExecutorService; public PullMessageService(MQClientFactory mQClientFactory) { this.mQClientFactory = mQClientFactory; + this.scheduledExecutorService = mQClientFactory.getScheduledExecutorService(); + } + + + private void pullMessage(final PullRequest pullRequest) { + final MQConsumerInner consumer = this.mQClientFactory.selectConsumer(pullRequest.getConsumerGroup()); + if (consumer != null) { + DefaultMQPushConsumerImpl impl = (DefaultMQPushConsumerImpl) consumer; + impl.pullMessage(pullRequest); + } + else { + // TODO log + } } @@ -30,8 +47,11 @@ public void run() { while (!this.isStoped()) { try { PullRequest pullRequest = this.pullRequestQueue.take(); + if (pullRequest != null) { + this.pullMessage(pullRequest); + } } - catch (InterruptedException e) { + catch (Exception e) { // TODO log } } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java index 17e05596..3142b9f3 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/PullRequest.java @@ -8,11 +8,11 @@ /** * @author shijia.wxr - * */ public class PullRequest { private String consumerGroup; private MessageQueue messageQueue; + // hashCode与equals方法不包含此字段 private long nextOffset; @@ -44,4 +44,46 @@ public long getNextOffset() { public void setNextOffset(long nextOffset) { this.nextOffset = nextOffset; } + + + @Override + public String toString() { + return "PullRequest [consumerGroup=" + consumerGroup + ", messageQueue=" + messageQueue + ", nextOffset=" + + nextOffset + "]"; + } + + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((consumerGroup == null) ? 0 : consumerGroup.hashCode()); + result = prime * result + ((messageQueue == null) ? 0 : messageQueue.hashCode()); + return result; + } + + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + PullRequest other = (PullRequest) obj; + if (consumerGroup == null) { + if (other.consumerGroup != null) + return false; + } + else if (!consumerGroup.equals(other.consumerGroup)) + return false; + if (messageQueue == null) { + if (other.messageQueue != null) + return false; + } + else if (!messageQueue.equals(other.messageQueue)) + return false; + return true; + } } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java index fdb13801..6bd9f78f 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java @@ -754,4 +754,9 @@ public String getClientId() { public long getBootTimestamp() { return bootTimestamp; } + + + public ScheduledExecutorService getScheduledExecutorService() { + return scheduledExecutorService; + } } diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/consumer/ConsumerSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/consumer/ConsumerSubCommand.java index 2129553c..daaa25d7 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/consumer/ConsumerSubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/consumer/ConsumerSubCommand.java @@ -16,7 +16,7 @@ public String commandName() { @Override public String commandDesc() { - return "Insepect data of consumer"; + return "Inspect data of consumer"; } diff --git a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/producer/ProducerSubCommand.java b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/producer/ProducerSubCommand.java index 045414ef..ba8f40be 100644 --- a/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/producer/ProducerSubCommand.java +++ b/rocketmq-tools/src/main/java/com/alibaba/rocketmq/tools/producer/ProducerSubCommand.java @@ -16,7 +16,7 @@ public String commandName() { @Override public String commandDesc() { - return "Insepect data of producer"; + return "Inspect data of producer"; } From 69c67d6aff78afbcbf4171b03ac517533918f315 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sun, 26 May 2013 10:15:22 +0800 Subject: [PATCH 066/894] =?UTF-8?q?#42=20Transaction=20State=20Table=20Off?= =?UTF-8?q?set=E5=8F=98=E9=87=8F=E9=9C=80=E8=A6=81=E5=9C=A8=E6=81=A2?= =?UTF-8?q?=E5=A4=8D=E6=97=B6=E8=BF=9B=E8=A1=8C=E7=BA=A0=E9=94=99=20#45=20?= =?UTF-8?q?PullConsumer=20Offset=E5=AD=98=E5=82=A8=E4=B9=9F=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=AE=9A=E6=97=B6=E6=9B=B4=E6=96=B0=E5=88=B0Broker?= =?UTF-8?q?=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../broker/client/ClientChannelInfo.java | 3 +- .../processor/EndTransactionProcessor.java | 5 +++ .../rocketmq/client/MQClientConfig.java | 33 ++++++++++++----- .../consumer/DefaultMQPullConsumer.java | 4 +- .../consumer/DefaultMQPullConsumerImpl.java | 37 +++++++++++++++++-- .../consumer/DefaultMQPushConsumerImpl.java | 7 ++++ .../client/impl/consumer/MQConsumerInner.java | 3 ++ .../client/impl/factory/MQClientFactory.java | 21 +++++++++++ .../header/EndTransactionRequestHeader.java | 1 + .../transaction/TransactionStateService.java | 37 ++++++++++++++----- 10 files changed, 127 insertions(+), 24 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientChannelInfo.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientChannelInfo.java index 0a8067dd..cb2d275c 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientChannelInfo.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/client/ClientChannelInfo.java @@ -89,8 +89,9 @@ public boolean equals(Object obj) { if (other.channel != null) return false; } - else if (this.channel.id().intValue() != other.channel.id().intValue()) + else if (this.channel.id().intValue() != other.channel.id().intValue()) { return false; + } return true; } diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java index 7c07d796..359cbc5f 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/EndTransactionProcessor.java @@ -92,6 +92,11 @@ public RemotingCommand processRequest(ChannelHandlerContext ctx, RemotingCommand } // 提交 case MessageSysFlag.TransactionCommitType: { + if (requestHeader.getFromTransactionCheck()) { + logTransaction.warn("check producer[{}] transaction state, the producer commit the message.\n"// + + "RequestHeader: {} Remark: {}", RemotingHelper.parseChannelRemoteAddr(ctx.channel()), + requestHeader.toString(), request.getRemark()); + } break; } // 回滚 diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQClientConfig.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQClientConfig.java index a5208747..6f624bc0 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQClientConfig.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/MQClientConfig.java @@ -22,6 +22,7 @@ public class MQClientConfig { private int clientCallbackExecutorThreads = 5; private int pollNameServerInteval = 1000 * 30; private int heartbeatBrokerInterval = 1000 * 30; + private int uploadConsumerOffsetInterval = 1000 * 5; public static String defaultClientLogFileName() { @@ -110,6 +111,26 @@ public void setHeartbeatBrokerInterval(int heartbeatBrokerInterval) { } + public int getUploadConsumerOffsetInterval() { + return uploadConsumerOffsetInterval; + } + + + public void setUploadConsumerOffsetInterval(int uploadConsumerOffsetInterval) { + this.uploadConsumerOffsetInterval = uploadConsumerOffsetInterval; + } + + + @Override + public String toString() { + return "MQClientConfig [namesrvAddr=" + namesrvAddr + ", logFileName=" + logFileName + ", logLevel=" + + logLevel + ", clientIP=" + clientIP + ", instanceName=" + instanceName + + ", clientCallbackExecutorThreads=" + clientCallbackExecutorThreads + ", pollNameServerInteval=" + + pollNameServerInteval + ", heartbeatBrokerInterval=" + heartbeatBrokerInterval + + ", uploadConsumerOffsetInterval=" + uploadConsumerOffsetInterval + "]"; + } + + @Override public int hashCode() { final int prime = 31; @@ -122,6 +143,7 @@ public int hashCode() { result = prime * result + ((logLevel == null) ? 0 : logLevel.hashCode()); result = prime * result + ((namesrvAddr == null) ? 0 : namesrvAddr.hashCode()); result = prime * result + pollNameServerInteval; + result = prime * result + uploadConsumerOffsetInterval; return result; } @@ -171,15 +193,8 @@ else if (!namesrvAddr.equals(other.namesrvAddr)) return false; if (pollNameServerInteval != other.pollNameServerInteval) return false; + if (uploadConsumerOffsetInterval != other.uploadConsumerOffsetInterval) + return false; return true; } - - - @Override - public String toString() { - return "MQClientConfig [namesrvAddr=" + namesrvAddr + ", logFileName=" + logFileName + ", logLevel=" - + logLevel + ", clientIP=" + clientIP + ", instanceName=" + instanceName - + ", clientCallbackExecutorThreads=" + clientCallbackExecutorThreads + ", pollNameServerInteval=" - + pollNameServerInteval + ", heartbeatBrokerInterval=" + heartbeatBrokerInterval + "]"; - } } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java index 07b3b5c4..77f9c30d 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/DefaultMQPullConsumer.java @@ -171,14 +171,14 @@ public void pullBlockIfNotFound(MessageQueue mq, String subExpression, long offs @Override public void updateConsumeOffset(MessageQueue mq, long offset) throws RemotingException, MQBrokerException, InterruptedException, MQClientException { - this.defaultMQPullConsumerImpl.updateConsumeOffset(mq, offset); + this.defaultMQPullConsumerImpl.updateConsumeOffsetToBroker(mq, offset); } @Override public long fetchConsumeOffset(MessageQueue mq) throws RemotingException, MQBrokerException, InterruptedException, MQClientException { - return this.defaultMQPullConsumerImpl.fetchConsumeOffset(mq); + return this.defaultMQPullConsumerImpl.fetchConsumeOffsetFromBroker(mq); } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java index cfb64676..efcd76f0 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPullConsumerImpl.java @@ -7,6 +7,8 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicLong; import com.alibaba.rocketmq.client.QueryResult; import com.alibaba.rocketmq.client.consumer.DefaultMQPullConsumer; @@ -42,6 +44,9 @@ public class DefaultMQPullConsumerImpl implements MQConsumerInner { private MQClientFactory mQClientFactory; private PullAPIWrapper pullAPIWrapper; + private ConcurrentHashMap offsetTable = + new ConcurrentHashMap(); + public DefaultMQPullConsumerImpl(final DefaultMQPullConsumer defaultMQPullConsumer) { this.defaultMQPullConsumer = defaultMQPullConsumer; @@ -88,6 +93,7 @@ public void shutdown() { break; case RUNNING: this.serviceState = ServiceState.SHUTDOWN_ALREADY; + this.uploadConsumerOffsetsToBroker(); this.mQClientFactory.unregisterConsumer(this.defaultMQPullConsumer.getConsumerGroup()); this.mQClientFactory.shutdown(); break; @@ -292,8 +298,16 @@ public void pullBlockIfNotFound(MessageQueue mq, String subExpression, long offs } - public void updateConsumeOffset(MessageQueue mq, long offset) throws RemotingException, MQBrokerException, - InterruptedException, MQClientException { + public void updateConsumeOffset(MessageQueue mq, long offset) { + + } + + + /** + * 更新Consumer Offset,在Master断网期间,可能会更新到Slave,这里需要优化,或者在Slave端优化, TODO + */ + public void updateConsumeOffsetToBroker(MessageQueue mq, long offset) throws RemotingException, + MQBrokerException, InterruptedException, MQClientException { FindBrokerResult findBrokerResult = this.mQClientFactory.findBrokerAddressInAdmin(mq.getBrokerName()); if (null == findBrokerResult) { // TODO 此处可能对Name Server压力过大,需要调优 @@ -317,7 +331,7 @@ public void updateConsumeOffset(MessageQueue mq, long offset) throws RemotingExc } - public long fetchConsumeOffset(MessageQueue mq) throws RemotingException, MQBrokerException, + public long fetchConsumeOffsetFromBroker(MessageQueue mq) throws RemotingException, MQBrokerException, InterruptedException, MQClientException { FindBrokerResult findBrokerResult = this.mQClientFactory.findBrokerAddressInAdmin(mq.getBrokerName()); if (null == findBrokerResult) { @@ -387,4 +401,21 @@ public Set getMQSubscriptions() { public String getGroupName() { return this.defaultMQPullConsumer.getConsumerGroup(); } + + + @Override + public void uploadConsumerOffsetsToBroker() { + for (MessageQueue mq : this.offsetTable.keySet()) { + AtomicLong offset = this.offsetTable.get(mq); + if (offset != null) { + try { + this.updateConsumeOffsetToBroker(mq, offset.get()); + // TODO log + } + catch (Exception e) { + // TODO log + } + } + } + } } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java index 55a8aa7e..0f3b594d 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java @@ -249,4 +249,11 @@ public void onException(Throwable e) { e.printStackTrace(); } } + + + @Override + public void uploadConsumerOffsetsToBroker() { + // TODO Auto-generated method stub + + } } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/MQConsumerInner.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/MQConsumerInner.java index d417d08e..61850b23 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/MQConsumerInner.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/consumer/MQConsumerInner.java @@ -25,4 +25,7 @@ public interface MQConsumerInner { public Set getMQSubscriptions(); + + + public void uploadConsumerOffsetsToBroker(); } diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java index 6bd9f78f..c4af2d9d 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/impl/factory/MQClientFactory.java @@ -201,6 +201,20 @@ public void run() { } } }, 1000, this.mQClientConfig.getHeartbeatBrokerInterval(), TimeUnit.MILLISECONDS); + + // 定时向Broker上传Consumer Offset信息 + this.scheduledExecutorService.scheduleAtFixedRate(new Runnable() { + + @Override + public void run() { + try { + MQClientFactory.this.uploadConsumerOffsetsToBroker(); + } + catch (Exception e) { + log.error("ScheduledTask uploadConsumerOffsets exception", e); + } + } + }, 1000 * 10, this.mQClientConfig.getUploadConsumerOffsetInterval(), TimeUnit.MILLISECONDS); } @@ -264,6 +278,13 @@ public void shutdown() { } + private void uploadConsumerOffsetsToBroker() { + for (MQConsumerInner consumer : this.consumerTable.values()) { + consumer.uploadConsumerOffsetsToBroker(); + } + } + + private void unregisterClientWithLock(final String producerGroup, final String consumerGroup) { try { if (this.lockHeartbeat.tryLock(LockTimeoutMillis, TimeUnit.MILLISECONDS)) { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java index 8c895adb..19f9112f 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/protocol/header/EndTransactionRequestHeader.java @@ -24,6 +24,7 @@ public class EndTransactionRequestHeader implements CommandCustomHeader { @CFNotNull private Integer commitOrRollback; // TransactionCommitType // TransactionRollbackType + // TransactionNotType @CFNullable private Boolean fromTransactionCheck = false; diff --git a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java index 001700ed..bf8ee4e3 100644 --- a/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java +++ b/rocketmq-store/src/main/java/com/alibaba/rocketmq/store/transaction/TransactionStateService.java @@ -173,6 +173,7 @@ private void recreateStateTable() { if (msgExt != null) { this.appendPreparedTransaction(msgExt.getCommitLogOffset(), msgExt.getStoreSize(), (int) (msgExt .getStoreTimestamp() / 1000), msgExt.getProperty(Message.PROPERTY_PRODUCER_GROUP).hashCode()); + this.tranStateTableOffset.incrementAndGet(); } } } @@ -193,18 +194,32 @@ private void recoverStateTableNormal() { long mapedFileOffset = 0; while (true) { for (int i = 0; i < mapedFileSizeLogics; i += TSStoreUnitSize) { - long offset = byteBuffer.getLong(); - int size = byteBuffer.getInt(); - long tagsCode = byteBuffer.getLong(); + + final long clOffset_read = byteBuffer.getLong(); + final int size_read = byteBuffer.getInt(); + final int timestamp_read = byteBuffer.getInt(); + final int groupHashCode_read = byteBuffer.getInt(); + final int state_read = byteBuffer.getInt(); + + boolean stateOK = false; + switch (state_read) { + case MessageSysFlag.TransactionPreparedType: + case MessageSysFlag.TransactionCommitType: + case MessageSysFlag.TransactionRollbackType: + stateOK = true; + break; + default: + break; + } // 说明当前存储单元有效 // TODO 这样判断有效是否合理? - if (offset >= 0 && size > 0) { + if (clOffset_read >= 0 && size_read > 0 && stateOK) { mapedFileOffset = i + TSStoreUnitSize; } else { - log.info("recover current logics file over, " + mapedFile.getFileName() + " " + offset - + " " + size + " " + tagsCode); + log.info("recover current transaction state table file over, " + mapedFile.getFileName() + + " " + clOffset_read + " " + size_read + " " + timestamp_read); break; } } @@ -214,7 +229,8 @@ private void recoverStateTableNormal() { index++; if (index >= mapedFiles.size()) { // 当前条件分支不可能发生 - log.info("recover last logics file over, last maped file " + mapedFile.getFileName()); + log.info("recover last transaction state table file over, last maped file " + + mapedFile.getFileName()); break; } else { @@ -222,11 +238,11 @@ private void recoverStateTableNormal() { byteBuffer = mapedFile.sliceByteBuffer(); processOffset = mapedFile.getFileFromOffset(); mapedFileOffset = 0; - log.info("recover next logics file, " + mapedFile.getFileName()); + log.info("recover next transaction state table file, " + mapedFile.getFileName()); } } else { - log.info("recover current logics queue over " + mapedFile.getFileName() + " " + log.info("recover current transaction state table queue over " + mapedFile.getFileName() + " " + (processOffset + mapedFileOffset)); break; } @@ -234,6 +250,9 @@ private void recoverStateTableNormal() { processOffset += mapedFileOffset; this.tranStateTable.truncateDirtyFiles(processOffset); + this.tranStateTableOffset.set(this.tranStateTable.getMaxOffset() / TSStoreUnitSize); + log.info("recover normal over, transaction state table max offset: {}", + this.tranStateTableOffset.get()); } } From b626a1de50c362aaa6146a6fd29778b592c58932 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sun, 26 May 2013 12:47:01 +0800 Subject: [PATCH 067/894] =?UTF-8?q?#46=20=E4=BF=AE=E5=A4=8D=E5=8F=91?= =?UTF-8?q?=E9=80=81Oneway=E5=BD=A2=E5=BC=8F=E6=B6=88=E6=81=AF=EF=BC=8CCli?= =?UTF-8?q?ent=E4=BA=A7=E7=94=9F=E5=91=8A=E8=AD=A6=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E5=8E=9F=E5=9B=A0=E6=98=AFBroker?= =?UTF-8?q?=E6=94=B6=E5=88=B0=E6=B6=88=E6=81=AF=E8=BF=94=E5=9B=9E=E5=BA=94?= =?UTF-8?q?=E7=AD=94=E8=B5=B0=E4=BA=86=E7=89=B9=E6=AE=8A=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=EF=BC=8C=E8=BF=99=E9=87=8C=E6=B2=A1=E6=9C=89=E8=80=83=E8=99=91?= =?UTF-8?q?Oneway=20@qianjinkr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/SendMessageProcessor.java | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java index 1fb5397a..f9fdeed5 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/processor/SendMessageProcessor.java @@ -206,23 +206,25 @@ public RemotingCommand processRequest(final ChannelHandlerContext ctx, final Rem responseHeader.setQueueOffset(putMessageResult.getAppendMessageResult().getLogicsOffset()); // 直接返回 - try { - ctx.write(response).addListener(new ChannelFutureListener() { - @Override - public void operationComplete(ChannelFuture future) throws Exception { - if (!future.isSuccess()) { - log.error("SendMessageProcessor response to " + future.channel().remoteAddress() - + " failed", future.cause()); - log.error(request.toString()); - log.error(response.toString()); + if (!request.isOnewayRPC()) { + try { + ctx.write(response).addListener(new ChannelFutureListener() { + @Override + public void operationComplete(ChannelFuture future) throws Exception { + if (!future.isSuccess()) { + log.error("SendMessageProcessor response to " + + future.channel().remoteAddress() + " failed", future.cause()); + log.error(request.toString()); + log.error(response.toString()); + } } - } - }); - } - catch (Throwable e) { - log.error("SendMessageProcessor process request over, but response failed", e); - log.error(request.toString()); - log.error(response.toString()); + }); + } + catch (Throwable e) { + log.error("SendMessageProcessor process request over, but response failed", e); + log.error(request.toString()); + log.error(response.toString()); + } } this.brokerController.getPullRequestHoldService().notifyMessageArriving(requestHeader.getTopic(), From fef0777def754e4202f433196f871cb77fb86aee Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sun, 26 May 2013 13:03:22 +0800 Subject: [PATCH 068/894] =?UTF-8?q?fixed=20#47=20=E4=BF=AE=E5=A4=8DNettyRe?= =?UTF-8?q?motingServer=E6=B2=A1=E6=9C=89=E5=AE=9A=E6=97=B6=E6=89=AB?= =?UTF-8?q?=E6=8F=8FresponseTable=E8=B6=85=E6=97=B6=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E7=9A=84=E7=BC=BA=E9=99=B7=20PS=EF=BC=9ANettyRemotingClient?= =?UTF-8?q?=E4=B9=8B=E5=89=8D=E5=B7=B2=E7=BB=8F=E6=9C=89=E6=AD=A4=E8=BF=87?= =?UTF-8?q?=E7=A8=8B=EF=BC=8C=E6=89=80=E4=BB=A5client=E4=B8=8D=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E5=86=85=E5=AD=98=E6=B3=84=E6=BC=8F=E9=A3=8E=E9=99=A9?= =?UTF-8?q?=20@qianjinkr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remoting/netty/NettyRemotingServer.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java index 94548792..0f66ae6e 100644 --- a/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java +++ b/rocketmq-remoting/src/main/java/com/alibaba/rocketmq/remoting/netty/NettyRemotingServer.java @@ -18,6 +18,8 @@ import io.netty.util.concurrent.DefaultEventExecutorGroup; import java.net.InetSocketAddress; +import java.util.Timer; +import java.util.TimerTask; import java.util.concurrent.Executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -54,6 +56,9 @@ public class NettyRemotingServer extends NettyRemotingAbstract implements Remoti private final ChannelEventListener channelEventListener; + // 定时器 + private final Timer timer = new Timer("ServerHouseKeepingService", true); + class NettyServerHandler extends ChannelInboundMessageHandlerAdapter { @Override @@ -186,12 +191,30 @@ public void initChannel(SocketChannel ch) throws Exception { if (this.channelEventListener != null) { this.nettyEventExecuter.start(); } + + // 每隔1秒扫描下异步调用超时情况 + this.timer.scheduleAtFixedRate(new TimerTask() { + + @Override + public void run() { + try { + NettyRemotingServer.this.scanResponseTable(); + } + catch (Exception e) { + log.error("scanResponseTable exception", e); + } + } + }, 1000 * 3, 1000); } @Override public void shutdown() { try { + if (this.timer != null) { + this.timer.cancel(); + } + this.eventLoopGroup.shutdownGracefully(); if (this.nettyEventExecuter != null) { From 026bef8c682eda15a6e80f7dcaceb98271b44289 Mon Sep 17 00:00:00 2001 From: "jin.qian" Date: Sun, 26 May 2013 13:10:30 +0800 Subject: [PATCH 069/894] =?UTF-8?q?=E5=A4=9Aidc=20=E6=9C=BA=E6=88=BF?= =?UTF-8?q?=E5=90=8E=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AllocateMessageQueueByMachineRoom.java | 84 +++++++++++++------ .../SelectMessageQueueByMachineRoom.java | 62 ++++++++------ 2 files changed, 94 insertions(+), 52 deletions(-) diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByMachineRoom.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByMachineRoom.java index 1d200460..3b7c6af2 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByMachineRoom.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/consumer/loadbalance/AllocateMessageQueueByMachineRoom.java @@ -1,26 +1,58 @@ -/** - * $Id: AllocateMessageQueueByMachineRoom.java 1831 2013-05-16 01:39:51Z shijia.wxr $ - */ -package com.alibaba.rocketmq.client.consumer.loadbalance; - -import java.util.List; - -import com.alibaba.rocketmq.client.consumer.AllocateMessageQueueStrategy; -import com.alibaba.rocketmq.common.MessageQueue; - - -/** - * 按照机房来分配队列,例如支付宝逻辑机房 - * - * @author shijia.wxr - * - */ -public class AllocateMessageQueueByMachineRoom implements AllocateMessageQueueStrategy { - - @Override - public List allocate(String group, String topic, String currentCID, List mqAll, - List cidAll) { - // TODO Auto-generated method stub - return mqAll; - } -} +/** + * $Id: AllocateMessageQueueByMachineRoom.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + */ +package com.alibaba.rocketmq.client.consumer.loadbalance; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import com.alibaba.rocketmq.client.consumer.AllocateMessageQueueStrategy; +import com.alibaba.rocketmq.common.MessageQueue; + + +/** + * 按照机房来分配队列,例如支付宝逻辑机房 + * 平均分配队列算法 + * + * @author shijia.wxr + * + */ +public class AllocateMessageQueueByMachineRoom implements AllocateMessageQueueStrategy { + private Set consumeridcs; + @Override + public List allocate(String group, String topic, String currentCID, List mqAll, + List cidAll) { + List result = new ArrayList(); + int currentIndex = cidAll.indexOf(currentCID); + if (currentIndex < 0) { + return result; + } + List premqAll = new ArrayList(); + for(MessageQueue mq:mqAll){ + String[] temp = mq.getBrokerName().split("@"); + if(temp.length==2 && consumeridcs.contains(temp[0])){ + premqAll.add(mq); + } + } + //Todo cid + int mod = premqAll.size() / cidAll.size(); + int rem = premqAll.size() % cidAll.size(); + int startindex = mod * currentIndex; + int endindex = startindex + mod; + for (int i = startindex; i < endindex; i++) { + result.add(mqAll.get(i)); + } + if (rem > currentIndex) { + result.add(premqAll.get(currentIndex + mod * cidAll.size())); + } + return result; + } + + public Set getConsumeridcs() { + return consumeridcs; + } + public void setConsumeridcs(Set consumeridcs) { + this.consumeridcs = consumeridcs; + } +} diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByMachineRoom.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByMachineRoom.java index 4166c86d..a5011026 100644 --- a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByMachineRoom.java +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByMachineRoom.java @@ -1,26 +1,36 @@ -/** - * $Id: SelectMessageQueueByMachineRoom.java 1831 2013-05-16 01:39:51Z shijia.wxr $ - */ -package com.alibaba.rocketmq.client.producer.selector; - -import java.util.List; - -import com.alibaba.rocketmq.client.producer.MessageQueueSelector; -import com.alibaba.rocketmq.common.Message; -import com.alibaba.rocketmq.common.MessageQueue; - - -/** - * 根据机房来选择发往哪个队列,支付宝逻辑机房使用 - * - * @author shijia.wxr - * - */ -public class SelectMessageQueueByMachineRoom implements MessageQueueSelector { - - @Override - public MessageQueue select(List mqs, Message msg, Object arg) { - // TODO Auto-generated method stub - return null; - } -} +/** + * $Id: SelectMessageQueueByMachineRoom.java 1831 2013-05-16 01:39:51Z shijia.wxr $ + */ +package com.alibaba.rocketmq.client.producer.selector; + +import java.util.List; +import java.util.Set; + +import com.alibaba.rocketmq.client.producer.MessageQueueSelector; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.common.MessageQueue; + + +/** + * 根据机房来选择发往哪个队列,支付宝逻辑机房使用 + * + * @author shijia.wxr + * + */ +public class SelectMessageQueueByMachineRoom implements MessageQueueSelector { + private Set consumeridcs; + + @Override + public MessageQueue select(List mqs, Message msg, Object arg) { + // TODO Auto-generated method stub + return null; + } + + public Set getConsumeridcs() { + return consumeridcs; + } + + public void setConsumeridcs(Set consumeridcs) { + this.consumeridcs = consumeridcs; + } +} From ada08f73d0ceb1989b85eefc1facbed077925851 Mon Sep 17 00:00:00 2001 From: "jin.qian" Date: Sun, 26 May 2013 13:12:49 +0800 Subject: [PATCH 070/894] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E6=99=AE=E9=80=9A?= =?UTF-8?q?=E6=B6=88=E6=81=AF=20=E5=BC=82=E6=AD=A5=E6=99=AE=E9=80=9A?= =?UTF-8?q?=E6=B6=88=E6=81=AF=20Oneway=E6=99=AE=E9=80=9A=E6=B6=88=E6=81=AF?= =?UTF-8?q?=20=E5=90=8C=E6=AD=A5=E9=A1=BA=E5=BA=8F=E6=B6=88=E6=81=AF=20?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E9=A1=BA=E5=BA=8F=E6=B6=88=E6=81=AF=20Oneway?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=E6=B6=88=E6=81=AF=20=E5=88=86=E5=B8=83?= =?UTF-8?q?=E5=BC=8F=E4=BA=8B=E5=8A=A1=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/producer/AsyOrderProducer.java | 51 ++++++++++++++++++ .../example/producer/AsyProducer.java | 52 +++++++++++++++++++ .../example/producer/OneWayOrderProducer.java | 40 ++++++++++++++ .../example/producer/OneWayProducer.java | 39 ++++++++++++++ .../example/producer/SynOrderProducer.java | 44 ++++++++++++++++ .../example/producer/SynProducer.java | 43 +++++++++++++++ 6 files changed, 269 insertions(+) create mode 100644 rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/AsyOrderProducer.java create mode 100644 rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/AsyProducer.java create mode 100644 rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/OneWayOrderProducer.java create mode 100644 rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/OneWayProducer.java create mode 100644 rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynOrderProducer.java create mode 100644 rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynProducer.java diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/AsyOrderProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/AsyOrderProducer.java new file mode 100644 index 00000000..8a2945a6 --- /dev/null +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/AsyOrderProducer.java @@ -0,0 +1,51 @@ +package com.alibaba.rocketmq.example.producer; + +import com.alibaba.rocketmq.client.exception.MQClientException; +import com.alibaba.rocketmq.client.producer.DefaultMQProducer; +import com.alibaba.rocketmq.client.producer.MQProducer; +import com.alibaba.rocketmq.client.producer.SendCallback; +import com.alibaba.rocketmq.client.producer.SendResult; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.remoting.exception.RemotingException; + +public class AsyOrderProducer { + /** + * @param args + * @throws MQClientException + */ + public static void main(String[] args) throws MQClientException { + MQProducer asyproducer = new DefaultMQProducer("example.producer"); + + asyproducer.start(); + + String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; + final SendCallback sendCallback = new SendCallback(){ + + @Override + public void onSuccess(SendResult sendResult) { + System.out.println(sendResult); + } + + @Override + public void onException(Throwable e) { + e.printStackTrace(); + } + + }; + for (int i = 0; i < 10; i++) { + try { + Message msg = + new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ from asyproducer " + i).getBytes()); + asyproducer.send(msg,sendCallback); + } catch (RemotingException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (MQClientException e1) { + e1.printStackTrace(); + } + } + asyproducer.shutdown(); + System.exit(0); + } +} diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/AsyProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/AsyProducer.java new file mode 100644 index 00000000..23f6939b --- /dev/null +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/AsyProducer.java @@ -0,0 +1,52 @@ +package com.alibaba.rocketmq.example.producer; + +import com.alibaba.rocketmq.client.exception.MQClientException; +import com.alibaba.rocketmq.client.producer.DefaultMQProducer; +import com.alibaba.rocketmq.client.producer.MQProducer; +import com.alibaba.rocketmq.client.producer.SendCallback; +import com.alibaba.rocketmq.client.producer.SendResult; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.remoting.exception.RemotingException; + +public class AsyProducer { + /** + * @param args + * @throws MQClientException + */ + public static void main(String[] args) throws MQClientException { + MQProducer asyproducer = new DefaultMQProducer("example.producer"); + + asyproducer.start(); + + String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; + final SendCallback sendCallback = new SendCallback(){ + + @Override + public void onSuccess(SendResult sendResult) { + System.out.println(sendResult); + } + + @Override + public void onException(Throwable e) { + e.printStackTrace(); + } + + }; + for (int i = 0; i < 10; i++) { + try { + Message msg = + new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ from asyproducer " + i).getBytes()); + asyproducer.send(msg,sendCallback); + } catch (RemotingException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (MQClientException e1) { + e1.printStackTrace(); + } + } + asyproducer.shutdown(); + System.exit(0); + + } +} diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/OneWayOrderProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/OneWayOrderProducer.java new file mode 100644 index 00000000..3e27f970 --- /dev/null +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/OneWayOrderProducer.java @@ -0,0 +1,40 @@ +package com.alibaba.rocketmq.example.producer; + +import com.alibaba.rocketmq.client.exception.MQClientException; +import com.alibaba.rocketmq.client.producer.DefaultMQProducer; +import com.alibaba.rocketmq.client.producer.MQProducer; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.remoting.exception.RemotingException; + +public class OneWayOrderProducer { + + /** + * @param args + * @throws MQClientException + */ + public static void main(String[] args) throws MQClientException { + + MQProducer synproducer = new DefaultMQProducer("example.producer"); + + synproducer.start(); + + String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; + + for (int i = 0; i < 10; i++) { + try { + Message msg = + new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ from OneWay" + i).getBytes()); + synproducer.sendOneway(msg); + } catch (RemotingException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (MQClientException e1) { + e1.printStackTrace(); + } + } + synproducer.shutdown(); + System.exit(0); + } + +} diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/OneWayProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/OneWayProducer.java new file mode 100644 index 00000000..fb2b594b --- /dev/null +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/OneWayProducer.java @@ -0,0 +1,39 @@ +package com.alibaba.rocketmq.example.producer; + +import com.alibaba.rocketmq.client.exception.MQBrokerException; +import com.alibaba.rocketmq.client.exception.MQClientException; +import com.alibaba.rocketmq.client.producer.DefaultMQProducer; +import com.alibaba.rocketmq.client.producer.MQProducer; +import com.alibaba.rocketmq.client.producer.SendResult; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.remoting.exception.RemotingException; + +public class OneWayProducer { + /** + * @param args + * @throws MQClientException + */ + public static void main(String[] args) throws MQClientException { + MQProducer synproducer = new DefaultMQProducer("example.producer"); + + synproducer.start(); + + String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; + + for (int i = 0; i < 10; i++) { + try { + Message msg = + new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ from OneWay" + i).getBytes()); + synproducer.sendOneway(msg); + } catch (RemotingException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (MQClientException e1) { + e1.printStackTrace(); + } + } + synproducer.shutdown(); + System.exit(0); + } +} diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynOrderProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynOrderProducer.java new file mode 100644 index 00000000..356a1394 --- /dev/null +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynOrderProducer.java @@ -0,0 +1,44 @@ +package com.alibaba.rocketmq.example.producer; + +import com.alibaba.rocketmq.client.exception.MQBrokerException; +import com.alibaba.rocketmq.client.exception.MQClientException; +import com.alibaba.rocketmq.client.producer.DefaultMQProducer; +import com.alibaba.rocketmq.client.producer.MQProducer; +import com.alibaba.rocketmq.client.producer.SendResult; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.remoting.exception.RemotingException; + +public class SynOrderProducer { + /** + * @param args + * @throws MQClientException + */ + public static void main(String[] args) throws MQClientException { + + MQProducer synproducer = new DefaultMQProducer("example.producer"); + + synproducer.start(); + + String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; + + for (int i = 0; i < 10; i++) { + try { + Message msg = + new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ from synproducer" + i).getBytes()); + SendResult sendResult; + sendResult = synproducer.send(msg); + System.out.println(sendResult); + } catch (RemotingException e) { + e.printStackTrace(); + } catch (MQBrokerException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (MQClientException e1) { + e1.printStackTrace(); + } + } + synproducer.shutdown(); + System.exit(0); + } +} diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynProducer.java new file mode 100644 index 00000000..e746a481 --- /dev/null +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynProducer.java @@ -0,0 +1,43 @@ +package com.alibaba.rocketmq.example.producer; + +import com.alibaba.rocketmq.client.exception.MQBrokerException; +import com.alibaba.rocketmq.client.exception.MQClientException; +import com.alibaba.rocketmq.client.producer.DefaultMQProducer; +import com.alibaba.rocketmq.client.producer.MQProducer; +import com.alibaba.rocketmq.client.producer.SendResult; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.remoting.exception.RemotingException; + +public class SynProducer { + /** + * @param args + * @throws MQClientException + */ + public static void main(String[] args) throws MQClientException { + MQProducer synproducer = new DefaultMQProducer("example.producer"); + + synproducer.start(); + + String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; + + for (int i = 0; i < 10; i++) { + try { + Message msg = + new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ from synproducer" + i).getBytes()); + SendResult sendResult; + sendResult = synproducer.send(msg); + System.out.println(sendResult); + } catch (RemotingException e) { + e.printStackTrace(); + } catch (MQBrokerException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (MQClientException e1) { + e1.printStackTrace(); + } + } + synproducer.shutdown(); + System.exit(0); + } +} From 256eae874af4dd364d93b47878ad56ec93a5801d Mon Sep 17 00:00:00 2001 From: "jin.qian" Date: Sun, 26 May 2013 14:45:54 +0800 Subject: [PATCH 071/894] =?UTF-8?q?=E9=9A=8F=E6=9C=BA=E9=80=89=E6=8B=A9Mes?= =?UTF-8?q?sageQueue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../selector/SelectMessageQueueByRandoom.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByRandoom.java diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByRandoom.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByRandoom.java new file mode 100644 index 00000000..ae9a0b4b --- /dev/null +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByRandoom.java @@ -0,0 +1,19 @@ +package com.alibaba.rocketmq.client.producer.selector; + +import java.util.List; +import java.util.Random; + +import com.alibaba.rocketmq.client.producer.MessageQueueSelector; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.common.MessageQueue; + +public class SelectMessageQueueByRandoom implements MessageQueueSelector { + + @Override + public MessageQueue select(List mqs, Message msg, Object arg) { + // TODO Auto-generated method stub + Random random = new Random(mqs.size()); + return mqs.get(random.nextInt()); + } + +} From 67b64660ea16281d28c428132c14403510514d8b Mon Sep 17 00:00:00 2001 From: "jin.qian" Date: Sun, 26 May 2013 14:45:54 +0800 Subject: [PATCH 072/894] =?UTF-8?q?=E9=9A=8F=E6=9C=BA=E9=80=89=E6=8B=A9Mes?= =?UTF-8?q?sageQueue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../selector/SelectMessageQueueByRandoom.java | 19 +++++++++++++++++++ .../example/producer/SynOrderProducer.java | 5 ++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByRandoom.java diff --git a/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByRandoom.java b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByRandoom.java new file mode 100644 index 00000000..ae9a0b4b --- /dev/null +++ b/rocketmq-client/src/main/java/com/alibaba/rocketmq/client/producer/selector/SelectMessageQueueByRandoom.java @@ -0,0 +1,19 @@ +package com.alibaba.rocketmq.client.producer.selector; + +import java.util.List; +import java.util.Random; + +import com.alibaba.rocketmq.client.producer.MessageQueueSelector; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.common.MessageQueue; + +public class SelectMessageQueueByRandoom implements MessageQueueSelector { + + @Override + public MessageQueue select(List mqs, Message msg, Object arg) { + // TODO Auto-generated method stub + Random random = new Random(mqs.size()); + return mqs.get(random.nextInt()); + } + +} diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynOrderProducer.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynOrderProducer.java index 356a1394..3acfc598 100644 --- a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynOrderProducer.java +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynOrderProducer.java @@ -4,7 +4,9 @@ import com.alibaba.rocketmq.client.exception.MQClientException; import com.alibaba.rocketmq.client.producer.DefaultMQProducer; import com.alibaba.rocketmq.client.producer.MQProducer; +import com.alibaba.rocketmq.client.producer.MessageQueueSelector; import com.alibaba.rocketmq.client.producer.SendResult; +import com.alibaba.rocketmq.client.producer.selector.SelectMessageQueueByMachineRoom; import com.alibaba.rocketmq.common.Message; import com.alibaba.rocketmq.remoting.exception.RemotingException; @@ -26,7 +28,8 @@ public static void main(String[] args) throws MQClientException { Message msg = new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ from synproducer" + i).getBytes()); SendResult sendResult; - sendResult = synproducer.send(msg); + MessageQueueSelector selector = new SelectMessageQueueByMachineRoom(); + sendResult = synproducer.send(msg, selector, null); System.out.println(sendResult); } catch (RemotingException e) { e.printStackTrace(); From 93feb76ca7854fb8d68d6095279f1b32dea5fca1 Mon Sep 17 00:00:00 2001 From: "jin.qian" Date: Sun, 26 May 2013 14:52:41 +0800 Subject: [PATCH 073/894] =?UTF-8?q?=E5=8F=91=E9=80=81=E5=BB=B6=E8=BF=9F?= =?UTF-8?q?=E6=B6=88=E8=B4=B9=E7=9A=84=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../producer/SynProducerDelayTimeMsg.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynProducerDelayTimeMsg.java diff --git a/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynProducerDelayTimeMsg.java b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynProducerDelayTimeMsg.java new file mode 100644 index 00000000..6f8192a8 --- /dev/null +++ b/rocketmq-example/src/main/java/com/alibaba/rocketmq/example/producer/SynProducerDelayTimeMsg.java @@ -0,0 +1,44 @@ +package com.alibaba.rocketmq.example.producer; + +import com.alibaba.rocketmq.client.exception.MQBrokerException; +import com.alibaba.rocketmq.client.exception.MQClientException; +import com.alibaba.rocketmq.client.producer.DefaultMQProducer; +import com.alibaba.rocketmq.client.producer.MQProducer; +import com.alibaba.rocketmq.client.producer.SendResult; +import com.alibaba.rocketmq.common.Message; +import com.alibaba.rocketmq.remoting.exception.RemotingException; + +public class SynProducerDelayTimeMsg { + /** + * @param args + * @throws MQClientException + */ + public static void main(String[] args) throws MQClientException { + MQProducer synproducer = new DefaultMQProducer("example.producer"); + + synproducer.start(); + + String[] tags = new String[] { "TagA", "TagB", "TagC", "TagD", "TagE" }; + + for (int i = 0; i < 10; i++) { + try { + Message msg = + new Message("TopicTest", tags[i % tags.length], "KEY" + i, ("Hello RocketMQ from synproducer" + i).getBytes()); + SendResult sendResult; + msg.setDelayTimeLevel(4); + sendResult = synproducer.send(msg); + System.out.println(sendResult); + } catch (RemotingException e) { + e.printStackTrace(); + } catch (MQBrokerException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } catch (MQClientException e1) { + e1.printStackTrace(); + } + } + synproducer.shutdown(); + System.exit(0); + } +} From da16d6730c1bf2b0a13f59ad7760150602d976fe Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sun, 26 May 2013 22:52:30 +0800 Subject: [PATCH 074/894] =?UTF-8?q?#4=20=E9=87=8D=E6=9E=84=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.bat | 2 ++ .../rocketmq/broker/BrokerStartup.java | 7 +++++++ .../alibaba/rocketmq/common/BrokerConfig.java | 10 +++++----- .../common/namesrv/NamesrvConfig.java | 2 +- .../rocketmq/console/ConsoleConfig.java | 2 +- .../namesrv/daemon/NamesrvClientTest.java | 19 +++++++++---------- 6 files changed, 25 insertions(+), 17 deletions(-) create mode 100644 install.bat diff --git a/install.bat b/install.bat new file mode 100644 index 00000000..2c3b5057 --- /dev/null +++ b/install.bat @@ -0,0 +1,2 @@ +mvn -Dmaven.test.skip=true clean package install assembly:assembly -U + diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java index 7b6e84bd..07f100c8 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java @@ -7,6 +7,7 @@ import java.io.FileInputStream; import java.io.InputStream; import java.util.Properties; +import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import org.apache.commons.cli.CommandLine; @@ -106,6 +107,12 @@ public static void main(String[] args) { MixAll.properties2Object(MixAll.commandLine2Properties(commandLine), brokerConfig); + Properties p = System.getProperties(); + Set sets = p.keySet(); + for (Object key : sets) { + System.out.println(key + "=" + p.getProperty(key.toString())); + } + if (null == brokerConfig.getRocketmqHome()) { System.out.println("Please set the " + MixAll.ROCKETMQ_HOME_ENV + " variable in your environment to match the location of the RocketMQ installation"); diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/BrokerConfig.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/BrokerConfig.java index d59aa366..b1bf77c6 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/BrokerConfig.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/BrokerConfig.java @@ -16,7 +16,7 @@ * @author shijia.wxr */ public class BrokerConfig { - private String rocketmqHome = System.getenv(MixAll.ROCKETMQ_HOME_ENV); + private String rocketmqHome = System.getProperty("rocketmq.home.dir", System.getenv(MixAll.ROCKETMQ_HOME_ENV)); private String namesrvAddr = null; private String brokerIP1 = RemotingUtil.getLocalAddress(); private String brokerIP2 = RemotingUtil.getLocalAddress(); @@ -35,8 +35,8 @@ public class BrokerConfig { private int pullMessageThreadPoolNums = Runtime.getRuntime().availableProcessors() * 6; private int adminBrokerThreadPoolNums = 8; - private String topicConfigPath = System.getProperty("user.home") + File.separator + "store" - + File.separator + "config" + File.separator + "topics.properties"; + private String topicConfigPath = System.getProperty("user.home") + File.separator + "store" + File.separator + + "config" + File.separator + "topics.properties"; private String consumerOffsetPath = System.getProperty("user.home") + File.separator + "store" + File.separator + "config" + File.separator + "consumeroffset.properties"; @@ -48,8 +48,8 @@ public class BrokerConfig { private int flushConsumerOffsetHistoryInterval = 1000 * 60; - private String configFilePath = System.getProperty("user.home") + File.separator + "store" - + File.separator + "config" + File.separator + "broker.properties"; + private String configFilePath = System.getProperty("user.home") + File.separator + "store" + File.separator + + "config" + File.separator + "broker.properties"; public static String localHostName() { diff --git a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/NamesrvConfig.java b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/NamesrvConfig.java index e0b2c8fd..58b12335 100644 --- a/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/NamesrvConfig.java +++ b/rocketmq-common/src/main/java/com/alibaba/rocketmq/common/namesrv/NamesrvConfig.java @@ -18,7 +18,7 @@ * */ public class NamesrvConfig { - private String rocketmqHome = System.getenv(MixAll.ROCKETMQ_HOME_ENV); + private String rocketmqHome = System.getProperty("rocketmq.home.dir", System.getenv(MixAll.ROCKETMQ_HOME_ENV)); private String orderConfPath = System.getProperty("user.home") + File.separator + "namesrv" + File.separator + "orderConf.properties"; private String brokerAddrConfPath = System.getProperty("user.home") + File.separator + "namesrv" diff --git a/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleConfig.java b/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleConfig.java index 2400aa8a..55a99707 100644 --- a/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleConfig.java +++ b/rocketmq-console/src/main/java/com/alibaba/rocketmq/console/ConsoleConfig.java @@ -11,7 +11,7 @@ * */ public class ConsoleConfig { - private String rocketmqHome = System.getenv(MixAll.ROCKETMQ_HOME_ENV); + private String rocketmqHome = System.getProperty("rocketmq.home.dir", System.getenv(MixAll.ROCKETMQ_HOME_ENV)); private String namesrvAddr = null; private String webRootPath; private int listenPort = 8888; diff --git a/rocketmq-namesrv/src/test/java/com/alibaba/rocketmq/namesrv/daemon/NamesrvClientTest.java b/rocketmq-namesrv/src/test/java/com/alibaba/rocketmq/namesrv/daemon/NamesrvClientTest.java index 999c6f71..0c0b420f 100644 --- a/rocketmq-namesrv/src/test/java/com/alibaba/rocketmq/namesrv/daemon/NamesrvClientTest.java +++ b/rocketmq-namesrv/src/test/java/com/alibaba/rocketmq/namesrv/daemon/NamesrvClientTest.java @@ -21,6 +21,7 @@ import com.alibaba.rocketmq.common.namesrv.NamesrvConfig; import com.alibaba.rocketmq.common.namesrv.TopicRuntimeData; import com.alibaba.rocketmq.common.protocol.header.namesrv.GetTopicResponseHeader; + import com.alibaba.rocketmq.namesrv.DataUtils; import com.alibaba.rocketmq.namesrv.common.Result; import com.alibaba.rocketmq.namesrv.sync.FutureGroup; @@ -51,8 +52,8 @@ public void testGroupCommit() throws Exception { String content = encode(topicConfigTable); RemotingCommand response1 = RemotingCommand.createResponseCommand(GetTopicResponseHeader.class); response1.setBody(content.getBytes(MixAll.DEFAULT_CHARSET)); - - GetTopicResponseHeader getTopicResponseHeader=(GetTopicResponseHeader)response1.getCustomHeader(); + + GetTopicResponseHeader getTopicResponseHeader = (GetTopicResponseHeader) response1.getCustomHeader(); getTopicResponseHeader.setVersion("version"); getTopicResponseHeader.setBrokerName("broker-019"); getTopicResponseHeader.setBrokerId(0); @@ -62,8 +63,8 @@ public void testGroupCommit() throws Exception { RemotingCommand response2 = RemotingCommand.createResponseCommand(GetTopicResponseHeader.class); response2.setBody(content.getBytes(MixAll.DEFAULT_CHARSET)); - - GetTopicResponseHeader getTopicResponseHeader2=(GetTopicResponseHeader)response2.getCustomHeader(); + + GetTopicResponseHeader getTopicResponseHeader2 = (GetTopicResponseHeader) response2.getCustomHeader(); getTopicResponseHeader2.setVersion("version"); getTopicResponseHeader2.setBrokerName("broker-019"); getTopicResponseHeader2.setBrokerId(0); @@ -72,13 +73,11 @@ public void testGroupCommit() throws Exception { response2.setRemark(null); EasyMock - .expect( - remotingClient.invokeSync(eq("12.12.13.4:8123"), anyObject(RemotingCommand.class), - anyLong())).andReturn(response1).anyTimes(); + .expect(remotingClient.invokeSync(eq("12.12.13.4:8123"), anyObject(RemotingCommand.class), anyLong())) + .andReturn(response1).anyTimes(); EasyMock - .expect( - remotingClient.invokeSync(eq("12.12.13.89:8123"), anyObject(RemotingCommand.class), - anyLong())).andReturn(response2).anyTimes(); + .expect(remotingClient.invokeSync(eq("12.12.13.89:8123"), anyObject(RemotingCommand.class), anyLong())) + .andReturn(response2).anyTimes(); EasyMock.replay(remotingClient); NamesrvConfig namesrvConfig = new NamesrvConfig(); From 2fe51cdae2a92e154e98fec378d307109fe191eb Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sun, 26 May 2013 23:05:20 +0800 Subject: [PATCH 075/894] =?UTF-8?q?#4=20=E5=8E=BB=E9=99=A4=E8=B0=83?= =?UTF-8?q?=E8=AF=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/alibaba/rocketmq/broker/BrokerStartup.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java index 07f100c8..a07b230d 100644 --- a/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java +++ b/rocketmq-broker/src/main/java/com/alibaba/rocketmq/broker/BrokerStartup.java @@ -107,12 +107,6 @@ public static void main(String[] args) { MixAll.properties2Object(MixAll.commandLine2Properties(commandLine), brokerConfig); - Properties p = System.getProperties(); - Set sets = p.keySet(); - for (Object key : sets) { - System.out.println(key + "=" + p.getProperty(key.toString())); - } - if (null == brokerConfig.getRocketmqHome()) { System.out.println("Please set the " + MixAll.ROCKETMQ_HOME_ENV + " variable in your environment to match the location of the RocketMQ installation"); From dfb1469344157451fbdf0a6fc72bd6195eb8af74 Mon Sep 17 00:00:00 2001 From: "shijia.wxr" Date: Sun, 26 May 2013 23:40:44 +0800 Subject: [PATCH 076/894] =?UTF-8?q?fixed=20#49=20=E4=B8=BAWindows=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E5=A2=9E=E5=8A=A0=E5=90=AF=E5=8A=A8=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=EF=BC=8C=E4=BD=BF=E7=94=A8=E4=BA=86=E6=88=91=E7=9A=84=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E5=BC=80=E6=BA=90=E9=A1=B9=E7=9B=AE=20https://github.?= =?UTF-8?q?com/vintagewang/jwrapper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/mqadmin.exe | Bin 0 -> 456704 bytes bin/mqadmin.xml | 26 ++++++++++++++++++++++++++ bin/mqbroker.exe | Bin 0 -> 456704 bytes bin/mqbroker.xml | 26 ++++++++++++++++++++++++++ bin/mqnamesrv.exe | Bin 0 -> 456704 bytes bin/mqnamesrv.xml | 26 ++++++++++++++++++++++++++ 6 files changed, 78 insertions(+) create mode 100644 bin/mqadmin.exe create mode 100644 bin/mqadmin.xml create mode 100644 bin/mqbroker.exe create mode 100644 bin/mqbroker.xml create mode 100644 bin/mqnamesrv.exe create mode 100644 bin/mqnamesrv.xml diff --git a/bin/mqadmin.exe b/bin/mqadmin.exe new file mode 100644 index 0000000000000000000000000000000000000000..e8d8fac090b889ffc5f07d426857e824924473f6 GIT binary patch literal 456704 zcmeEvdwf*Yx%MQJz{qU|6^ZvzVvR&G7`2HbIztjz8zvA0A&NpYiot6n6NrKmoTSaT z9p$vz+Un_{r?rQ++S+Oc9(wBVLA zW>qb$@m4RobkR` zcE>~SoxH;SfAyFJE5422S!dk1;z4|_9#gwwv-(`T;$(atsH<4<06rgj@1zx`#b?q#KT5{wYL3?FD5xIfaE!(0G<+ug^J8}7s&z#*N6ghR z3l-{m)$@;ARI{j(ZHW`&=3IPk?p=>n{{O#!9s?r$QI0T=5se!|gStn3a(<>mgj;i3 zHrxM1H1o&#co<3Rnz1*{u~|f}$#%^_D=$jEjS};9VIDxSya2^}Thc-|y;gt+|ZBSiMI&l+o`6?up_qDNppdGou5-Ib9tAODpKKjw$REcMGz>M}?l-fQE_mQpUl>s<2w z3kb7ar)PPdym`R#ayeyy@)hgqff0FjqDuexCSA&pKTiY7qnVlak%kA0=*%n;ot`Dy z173xL_COXobhHIr4kNs=yClC^et3feO*HLlq{JtS^-YnQ# zW{PMqJ1>8Sh%C!4kSmq|d1jGIG&YAui17aI8kYz+W3`K1Saa4Cg-cz+UHp~&7OOUP zhlUGt@beTy*i+peVWJyFb_s~|czf5UVUju5*d!dvltt;>fh|3%Z+<#0(U$P8W$#Ik z(9PR()qd9xkAUCkXBxlnapU3@_q1N{_~(cfA9;X8ZucC$-5<}+;R7>s^!z~%k>4sJ4cQL$1dJ@0?d1-?%LNpC zd%40i2n4HNCM#;mAJC7rzn5iK`{VDMy=z~{*399BY{eZ=){#`!jPL%Y z7qXwmC)@2wDw9^(PL@SS8P{TTHE_FPOr${h^; zc-_)GJSgG)_;J#$9Wy;Gf^HbEt4k|um_HWhW(c9B))sb#%J zv&?xGk4yA_J$UR<_kR%?^3n7UNDG4INW*Lvx$8xwINKZOzJg4pvTs66p|ngM zo}2DixjOv_6B?x_wC>4%Co~EZ8o~)}NwX$23J~=%A=OoxTrBm3=GA@e3Hj#g2|X5X z8XdL#VtYd8aYDrCKr6HVm;FwJD|6LsOeDje$iOS}6eyX>%_B>`_Cyw4ttYZ0-ZVOD z%|-S^Zn&BgSg0=n)?Kc_r;5P0stJV$Q*#=z~T9ijb$M`%By zS9`_ZwLNJD{NV1^7AX*sOY(Qf(p$lI&B;)dEp<6fMDUB-NM5JP6hly2v69guGArA2 zwt zR1I|iD$-4U!#pM1@LlT&)!D88%WmCU!-o~-azMBLyYA}=)@F(>{|cGQ6a z@&eZeu9-hCK_{B~C+RO{Np*O48YVJ4d}H-tSbtU0`}dyO&Jp$T+uqarp)th$a8&l! z&2#iV*km;s$Ub-x-KWws_FkZtV_9}iihaZaTs#@+^xriiw6FgK1Yo%>NV;wXfyXS z`A^~4@4)Z_&G(yn%mL>6pLh0}@AGg$^f%wb z?-oyhN%4rjIpqtK-db8e1d-jZjSH3f$GuHt=`3{91vTTky_{+XrK za@yMfzaRO^^4q`c$srT{qa5~s9MT^zL&@gY(!}C5<4{yaoh|dD~PDsIVxe zvucllW5Q9I>4=R4r}BCh4HD)|R}4VSw50wop{&6(=KZZwX!B(5uSu#MumR5~P~U!g zjvUQr(NUX&n4nS>7E{ABJ4hYoZ~65veD0O=N*oTV&cHK+U?SR(y_TPF*wm{nU{5g; zpT;lIL?J{WD;TjRt&3y1?MN@_9QFMB}91fJg{`kInV5VEuUR{_}t#L;Po9v-F z^b$+Y-v}i^RF+|bW&T*z%7EHn4WXVc)om})Lu9^O#jXZJG9(2J_FW$j8YHb(sb3^5 z)|iRC7YnNvm*>ZEt5}hql$E+07W&bxRGF&T=SpQNM5V0MnYwmgD@EFy+jZS8Xam9w zWF?tfN&1fpe922uDIWFO_92%vCF<36GJ8q<>(_q`d!!8Fw~dnxr~pm=UJ<#|>u^%X$d51|wMp3E2&vX-qsTBTYy6(j(##?0evbub(Q=RFp1qrWA){e_%&RoMOwKMY2~ixwZrCN z6)=E0RcdYsMxIo1zqqL(+k?I!h^g|KUw!^7vF{}j?!pQl5a9!d7mtz;RZx29)Kt^T*N-8Jv@+%1Mer?`X%j#?Rb2^Os11c7_ z4#qux0bkX!0c9(L6w*o+c{p1TPJ2#key4=+HQ8R8zfosr3Du|)pYCwidW_`y0{9~KZO_NEcbCvE;A>~9ag zjuX)rbS*40%SZ{VZG`u;!9jw%AHO-KBrcwE=%~jg?l2RBo^rlMf$=OSero@ zefxv%iS1C zvi$({v25u!)}&N2U!#n5Y#hhOSNlOP+wgzqvd!N*z_KBx(C5mHU5k~A+jHARbec>4 zMJc_S%q^V13tRapalV#S!}od}?#9vFPpjYL@8$}u`n3T{{SMi_=Kyw}+6%fXQ04Vmte$EpcU_UbKrM^@WpIP72mAB2q# z_DjXm8+(FIJM=Wo#h$hxb4I?d%D2iL_*Cqp3Ujogm1UgnbF2V*kZ3X7vY!A)9*&gg#_vP5NKYT&A@0Y!<9j5l+C*N6EBg>kSIw z|1O64-X;KPZ?B_bnBix+0MTiAiLEE+LuUpKm2|PT-L1Ph`=erY0abMXIka|!MpWKq zNr-x^^52T67qIca9-^*(MkA^`2~igZdLgRlt)oU%7OLhq7rWPV1fGU89hEmh+-P9wy?$9hM#kP?jJ~AB*2Rk;X{7(^_-X8X8aZ4DUS_U(@0^?fdi&PzWD;X z-A>-}iikX{KE4LmqmdiCHdcexv8fpftrlf%*b(~E2j0BJ5% zmn$z0J_I!@9FF5P2#p9d{8OE!Dv9|Ovw)`RId-NQuBolBJ0Lc`BB+i zTsV$R@!6H{oic_$7HdQ*Ai2`BH1)6q&-G^H&!C|4i>wW0|T$i5BwsKVm zz(|}DN`7XcLU6Qi;uoaAj!fdzVpwDFtdETzSj%+=kv?__iIk>A*L*B^adtUKm-%6c zE+Yd093r9r-HL!eMCG{*z!oHHekZX9`w7%O#7W~i-Q9%h?MVDY6AyiPW zBZOaj5113;d%*D;M(DK%UWew045XN|)O;ftdED9qiU%GmOsacTFsXy^m}%Mn34GGEiYMjayE0d}$H>3^q~?}ozXuBqRls6@ z_pNd`o=%H-;}7n{gA1Bt?)ZZW^*}&qH(><@G7Im8?i!3fp1l&kbx^7XL8;_`RKh>udo0Djo+nSE#0V!l`IFnb*#0Y+*-2HB%1ga++MmfV`fIO{{)hhC=gA+X z7Q$_o)PGd9Uz%Dask}5#&Py%q(O%8pms%y!K73ELgPK!GHEcPZYwtnZY#{WZVl|=hqtD@3wJ^1R;O8*Ve}wU&OC(oG%#ZLN-f=|ump2M0X@C7&<#YQl z*ZAqLobb&%GJLz}{!J`FVt&Nmn^@tbLf}v5PcaAugXBY`{nQ~q)LjO5%YM0MGqKTJ z5rlU?I_i=|)ocT#G_B8Z18Rl2<>i<`Br2<{#Rw^q?m`Mv zJ+ga*?+teYOjLZC=c>(=xAK{aUZUe$1UtS(SY>6p4EaAOo9SiQOo*@H`^O=qZ*Gtk z7^{BiLPuz@JPTE0k02AyQ(w2xQ9D*8gE;uz-MADoIi7EpCkofwj#Gfzz?{uORPJXA=C|XNSSEZi8M<|kKv%n-VtY}vX5Hl9dEY5=N zZ*vJ(YsXqt^1bQS2Cr{ESL;PSvsbG|tyT?IOO^e%F6*^gQ!pa3!R2pZpINK51XYt( z>)gbm*sEos6Y!|B9b6!+*ZiYiuZvVo(mW!1e(n=1qNny(QdW`q8Z7q;tPm(Th^*($ zKLvMyzP0^aa*ORuHi`>Gb3irJ&L|{t{DT+L?RF>F;$@@D;j_Y;aLYS>8 zK4)dlDB1u7<@zK}BE<s#W8!6(gc8>U20@q#NppUrt=ii_!Z$81Tp??Xl< z`d?tCFYsk<%FT3y#xkcqy6ki)xL2now=PI({V-a`HW^^{h?1#|i(yqJXYO`{?Yi9! zD^MdCy*}MAYXSNDHTM{~Ux@JGv_+vFEv7^-1(0pe-=l!sCSOuW-%00hSRy%#hWVz*-<27{oE2M1<%+$6~8J ze%NV6h>pe5I2TzhZXr=zkCluKgISq_>n0}NTP;fUAm$HF_4ubFwgo$Mz zxbGW5DGO38kV8Au99`WU9rRn33Qz);QG~_Q1D4r6U_k(t#QlSx91)h;$*|m~rcPLv z!;2hSoC1jaYCD}D9bC1s+9hU~2ja2eVAP&651MhBLoWaUT|n1R668^DhN$O2xQ9xfOLGBM#(3mHg<&SBVfp+}ah`Xu%-kvG55sAO=y3np#MGZ<-a78` zPT7P8be5vGa`GXtFz+*j;_(5`FYSf=^!*G zIvuQ^4%Y&m%7ZUDkw<;O9Q6Yzx0La8;uwg3jva&)O#tW*gj>=}BJ(ng%FeYOlGVPq zMf*CkRpIupqbYDcM1v8TysNsiV>8$U*3ymD*%B($4c~rh8yDYplot3Qa z{`e~l5S^11gx&+kQU|I^0~X~<|K7Ir(7ECF4>9~#ZJlK;m$$W|e&4;LMOw%ge*Z8z z_oL{@if7cb&x=&M2K8J6W<`il2oEFcVErG+-p$YOx-@wM#2{E6owIyqgqzclWrH>T z2AQOJJvu$)#+Zdn)TyY1cR%*_3O^uv#iUHHbXfMtnH^ReduIc8mVI?4Z z#4%8v)KLlh4=kv6#>U-n=GHG)R>?z8K^{&;Kwn!WXV7hHDyyXSBBjAlzqKEQzJPBI zinuaHjuXB*Wrv_NVTbGwgf~E^YxO8%>e_v%yZbpWAe0LrcoBohZ#E)M1LyPczX$(g zKcCw9WOuh|Ubq;v8X4+dV;1mR(^Tw=EyB5x6AeaAfr0^BEjsGO?*NODSsgCUxzrrC zQO~*kOg-m24j?ZZAm~9qgMjU8P}8ilM*IDDm*LxjKx8I{dqp^RSi@~spV7=azKb3r z#oO)SUed!oY7OVWa6phcI6BDMH&9U2ne?Q6BYa3e_z}<`uzCpf)5xg3J%6v>Kjs|l zX{t46*0ILr+I-=G5+S!yAhs7(C<=?zl>3`t%_JQ-`L!HXN#Rgh-N()tdnxpP9OhODdT&0$VAli+3ZyqlG}ry z3^lA(pTyU1r#T#5GsrEKp81nzZm+@4a9%4e zUm-8^d*2?K-*Vlb*Gc#F=4kl}{gs&*&dlu@B3l2Kg>= z!KTJ4-}iHCm0MY^ZRXqY3@R}8>8M?&Ywqlokw@5GT2-d9nfVI)FM||=(&SHyP<-sQ zi~_&Ka&zRt7cHt8BHd`)b+=kVi*Ue#Y+`XYR;UvDH|*=_y6RE*L(XDN;HipR2R11U zm5SmfL`snU7>Ldp$vr3Jv^xngPU<;t&thC4(S*-9VzyH_)#HiWe7c38 zDhokn^0hze0Tt{Da73faz~(PVMbT-cP?0FTQ7f3 z(D#lzJVaHqn}x<4vB{$0@4=)}rvy#gTA6MwBIknV;4)o_Z zqJDA*$y#?3%jY4?aW;AxnpDt0+O0y@TpInP35tN#WDyn2+pu(BLRqIn>PzjA`Vw-* zvaHO9Rdb6B^g|=}CBwN9NxJe1ihRV+iT3_SY|F@sgK5{I(AU^X3}Cp6nniTNk59p_ z^6huu7fMU+^`M941~uk(_qWRXC==#Bk-I18+Y0=yzA%Ab16a##`x9EA-vQR-r}>FC zYE5EjlC&lb$>sg6iTn1XHMy8;GXCqVN!JoitZ|pS;dV7cjq!f4)nQ|k%R}r0qZ#9| zI#Z&jQ>Do^uSri-IpGJ}mq-m0EydZ%dBYG8Fl!{VsPkJo+!^(kMld$r? zpwt^ksq>G5Dg)|NGCW;!4F&#D(55p^o6yqIy8iT)=8}HRtdQ*jPLl(E2^LwVSfp3x zVm4%vIb@OkIE%~)JV$;ACb{WEFv*LQCIYp>W|BE%l77u3bK3kP(Z?+44G`7UGG|DF z6+)!fa~YrsuhS|0Y^HO+aef|-Sf#|SLY?FrYko&(F1Ge+wuQ8>{Skj#;&4SP#bmOS zSFQu~Ct2R(Jkqp!H2QC-TLPSmZ@FyRT-IMMMO z4*0rA@|ZMDgr@oubV*vb^6dWGtMfNA_5A=ne8vUTQHs@hvHWgG!rh!CoJ4*^z=D%N~;L`5dzJDBmE`r;`d^M^iQj{aBeL@uCo`>q`=UZab{dNYMtRt86a_a-5(HO zi&q~iDgzid%i~}|JQBB%Hr#NKAXge0!r7_pcln<$DwV%Owm!&Bz9(qjke$bD>RCK9 z@qjufAm!K$$l+q#`vUdPt*%-)27W;tJLNNTpHa9h+hw?mzlgVZA1ydf9G*zJzJS;W z@|38v(=Y>qDPv_!Oam67js)CmjB-R&klKx{1q~+Mh=4{W!nk5K_e2<2eve@eDn_%M zrXc*Z@w(7ey36wF;fHbr+$D#swLzu@cF=ZA*|Zjmi-7~I&Q2HvSwP{?S5q-~`t!hs zd@e5oIaswYSvuuYDkH^eX9iDH>x;=_eJ?m4a|8+NJ2w)$GnFEf_m5vbI34)!TOWr; zjq+UNIItPsu^sQG zc*vff=i|KUz9wN_RfX0qD$e^EWCZ#M-AaQ-0d|i_FdvzwqHwrdLW$N6;O77kvI!=d7 ziA;21^B|m@paEg7OZ-5S^(m(Vlh;!v3V`TItvI0vooEUjsd>W00Zw>+$7%nG%CV!n z#3fhJCv2x7L~hCQH{pOmOICY* z5QngDd+-O%fGd9&E_T5B04O6KW3SBw+GD378v-nMgOS?-(<^9hGS(e{m|MqadeGT{ zMxko~2Uf$Xk{WFf`Zm=}5axVOK4^0rWKfQK4HmG}Y_;}eC!TrbRokd{&CLl$<^#9- z{u#f%gMk~NN+0(zmw1A{Hh9W^@dM78GhIgC6unj0>cv5L{Rjs_U%6Z2hTk#DnfmV|USv$Kb~YN%2&YZ@Op6ApCXVA~c7BG-X2Ik16r!-5dfIb~8S;3#1$q zgE1bdhN*|$@)^hjL(T)$_zP}XSi4x5H>2ckujS7)!rh4a8s?QaHfKbyMAfBv@gsG- z%4HC*azWfRI@OEKBz%W>o=(=jZHGyRfz8t*-^J+^vYtBJv+ANC1h1Tf3JPD7 z@neds{w_G;uYg9OLK-72e|$%hvl`ULHdF9_K*vasdW8yp^&|9m5t)LX5D2v{j}5n0 zP%K7pumXw~^zYtNK9%uUflLPxgq@76(Ly^dXz z$13uDSde7PAe}^2H3k5eINKwG=0?gaeKW;qMz5i1N*=wOu^-n~AQWX^Zt>waSeSt; zHv>|s|Iy5LJem?IK1TBX$zV2b*HIcY#`kJ2%y=v25Y2p9wNBd`s7njM^B?dE(Stc@|n;d75EXUsSa1x!N;EYm$L|q6Pb5a6k1mc^Bz!QcSz_H z>gDpDQ~OnN5od%o?JnL&CRZ-QtO?@A0w$SQR0kKXrjsE$6^on*8+Xk-Q|Y#e{b^eF z%U*(l#2)p}R4SXmgk8nF@aeVC*q~{MQs}7=_s|GtR0n3p>A;%c zZnHw2QMF*@TI{XmBA1TGn!%`5`w4ViR6q#e+(N7Y5aw>IC(V5anP>tR$YME00ai#$ zbWAN;fb*Y)ur2^qG%yu3aEx@qgB+e(N43)3*q{I@!qV3O;*{mjL9+~Zoj-xHah$vYAU$eXcfW*gDb(Eg3(jQzl;Toj=Jw}pd}Ut z!85(G(uKQ5DeI}C=cb9YqH1Cugc#%$rsk;U>w~%Lp)IS&&bA;8?4k;DYaqA7xh3Kv zs3Eu_fM7KVzi03GAFCyY$&Enkk0fd8#b>~_w zqRymDA!XfZqR{qGz-%pUI@4Zz+K+y8Pg=X2+b!sGEWQ|dY@uO+OUiJl33QoW3%(qH zWrb-3`~uyoa`nS>nd_TIw&d@Cj;>5M&@SM7$s%9eMmwY2s7yDU%|TytO(uK}juv#8 zQF}3(gH&N%ZVZhzd>u;$1q&xuFFsuqPN}ZR0AB<)Csqe?(*lund_$iu_nI_4Mx6QK z3;3CN6;S?qknScYjnyHdFrfMfRD-XB9W2ZC;6iqHL$g9HreH#aMHqqVMj(6u{h#_o zcZQ=D*bI1~f>(=NSJ1gGb|wnbYLDN$KE3vMU9`#ZF2R^ z*~v}b6+s1z)wKej=pj_AZ;=e$rh%Uz5BCB5DGGSEhP%^(dobV*x=Y##_E-#o*>X%w zcs;=$%~5mz9B^(w2al%+QAy&B4TCZnL&zg@IR>Kr1_Ps12jTC3nLbP7N=sxDz*<+w^#2Y2yxe(+?DOutNwb z_81}E?tbV#{kS}kyFK9CL2zO8D{%L=q=#-U#XdBUn+>aP9=p`7HE!7ttXhTJn4i^Q z#is)$A$a0;)a9Z$b+qL$xQZ&0MzRqD3INf;AxnIWG$H|4AQC|LNhWHNzczZ;eu$(_ z#6d}|yjjmx3ilYiddIL}2m_>%Gc^U!^+ z?jGhBMD^a#Twz{D(J;l9)PEjD+Jjbvb?WVovOG~*RPSWfzT8n;6Cdy;DAc=TLxRP!%9Vl{P|&2=^SXWli!p^p@v0qa#$bbZ%R}x=VnY=<^MEax!~w zFQT2qPd`3zz5&-PCOIF*=sK25zuz+uecnd~M3zxxmE(j+^auK8uxB3SV0h>k=C{-% zx?-c5u~WH>4dZpKY4!4Ez-6i%ETrfCS1QsW4>%Fn6XnFb@}wl=JLUee%3fDH zDw0d0XX>BPt0V#l@OA3R&(rXpNWFEcCv`3t#OHDx=5RcI>FG?(G9npJUosb-%*hsI z$wxt7i7R1mR-q$BHL0PM9`LA*DgW_BcXxbOp0Apw>}~}=)iDp(F4?IE`Ix0{rI$KY z6%LP2flhb^vPAA7zAPs-GMqm*E13JHqTyg< zZkEbmo!FLfx*90x+X8sHunm!NPD<=Cj+FtLGHNiIkrT|_B4vZ!`x|}q-i62sc24(U z`hyfx0K0~^c?Oh77&UOzb;>oKED(h=u(-E^(y40lzK1-zdvfSls8(t5hWT0idhA7mN(=AgIvzTnE6)5xxIo|- z6}cM>-v+pOKopa*jNCTE*N$ISBE>64F1$eNmt@K>k7K*ZXtx^%Xld?yaM~HUTS}cD z7(QG`i>PW%zzF|?INhYH!tvBvGZJ1t2)~!1^vmlJi-?_qSQYPr+V2TQZpxywYcd>8 zB08A}6u!eG-!gXtr8B_vDyjl^;4NbFT`|Z!+Sr{ou{jmL4Z=fH4FsP9uU?MGeZ_EY zD|N!b`Ko;DK4P2M(HLkk2MV{Lz143f^gY!9=<{N$Z7Bflg3RoinGPk(cWBA-c=aQJ zfnLTZ^-{^PlZG0~p^h5zv(UP08;p&h@5`?NL;t9FdBu^z=`n*Jqe<6Pz<`UI&V!4p z&HZg{H~rJ=GC2j9AeRC9Y3iz$<|3O^t!JsT4a-vMY?p3A^xW5>jg%>Ekz4DJjD`Mj zxbi4krwq8waAJ$JmvXPXB4@BUFR0??^KzqNw_@K?U{#O>l&d`f9^?cY^n!X6XJ^=^ z09r%~9*)67Y!H@M5B)Q*MBE9t3?rZ3FeL&6-ckexxWUxL_;g?fuzRjjyXPuUe@oEU zv1mGL@U?9gSvnCE@NHbIt_~q1KACqg)C1GO+^=X@)1yasG%gEdm`K(#bA#H=d<2xP zh2x+QJSB1iPX2%iRfEwy>>23FL!0XDzXNiVH*{QK5{yL{hG>9PdU z<;x)c^SxJd>5;Y$@O%zrN)8ZfI5!8m-(N0;hVaq7$WjK6!5i=(IksX3ia{FY7YHK= z=MrR#9VVB`#*kn>;QVbh=aNhD4qq*oPLqpF(V%gu+?~Eee4p zN@kth=5)j=d+qK10GtW{<6XvCkTn&AF-nn6a}(t{DJ3yRMm}1R(<}at&|Z}$g7^wp z5&{8ousie{aPfV7u9mpu&|g3&0`8rlxxRL|fuxrpQjD>X0w%axm3@2YvEx}|Xz z#EbS=AnGsIQLIK!y}kvQ!~K4LhBlLMXFQBFa*lw3{UTi8;5%Ld<)YHj0`JnJ2`KPX z#LHn%^(uz|P=d{C#ZxPg_771;+AdrOofr|-*DP@dp;>!^I`#vvfh+KIn!GF*-kDmk zZqA?gQP*P?gK#u66cIGBL$J8bbTF@jgW0p3dcuvaQs4Wv_ZaZ^7kEm6-n>PF>CpAY zGI`j{i^I8yl6(xh{Wva5a9tdP7E{0>Fh7C7+#vr9Z)syQE<3Dsq%&9IenE7fc0)VWgy3b?xbI8EM&6>VD<&&yes7|@+v3z+V z0+32vB0?^K-}1xr*r7ER)EJDlL^moTYeX0#;3+PsS{TxI)>B{7!>v09!%2ncQm#hw zOrK!cW|SdrZO?=~pK8tGyQ+vtK*+RDu)do~uy$K6A0Vj{NSbyJc6;Hi*)F;(ktw7$ zaVMuMamoPr2~7whq(zX`5!q21OL34#0IXPnnpO{hzsNz!Y4qs%H8SL)(+E8f1)m5K zT=3cwo44__qarYz2dTie#1Se`8Ur@C2_(h(qrJ^k0qjClT!>!iEM(BI1lmt?e}R)% zzX9xRB#KnH1tK7aUa2}2HPLzVP*#DH!@$WU%dn#vHi@tS{8UVsN7&>{Jh#FoqwzHc zDROk#^3Z;*BjBTsI$p9BL0HC1qDU`R$C9mh38Noc^~B|f)&D_O_+)lH04+gSJ2DS@ zb{@#PwIXgZC+snU$Jq?C4q9WW$y-NDqXJCkYCD99tQoE7O;MY33YLcllzo!BLf8*9P#->NwdnQqvdk2X`L=3!LC-tpY*a6ht6J<^5hxn`dD%Y1mXdWb#5 zUk|7PRA%P>PrwrMp$>yvB07@)G1l5^2I}wvrbdU_ViS8O<?iz(-Z^bNEW=g^14Z2jjCv*wFFHhOU#vW}>jjRXal9 z%^JM$LsgghSC62h@)r`OJR)012l1-jN3d^nj^I!kL5?uSJME+zMl=zYEH4m%%`EZ^F`8W@&OV661msrhS<@*Q? zv%PB$qP0wZAQ>3uM!D!=5+YQ*6Blq#>|u~tkqCCbp}nGrXX9Pr{dq-qi9%T0?&7yJ zds)w_@Q1_S>9q5KkfUcM!)Vu}ej5e=;334-{H%XL0q+P+(9tod=szgrxe<$XnA@3z zx(YRA;A6FOtTXM4CX>LcVZsgzqkmqkR<@BvvJz_OG;CkHtKhu3IR z3>cw$rj=R{c2Nbi-+NEed4wX7M~I*qqF1f4;rI)G2yCoQo%L3miDVanw6{;wYJU?4 z6x`X5P`nYr_|RqX3Cc%oAX4JN>t^#irhJ_#xn(K<^9NjW{F z>2Y=;FS)IWvm(eL<~~p45W@ntG=v1dh^m87@(+zEEH}A)6^F?EeShVp6>>ysVGn*? zAwOA@(wODQg~uC*n$a~*kS};YQ)?tTH;U#DlubojBx*kh`hZY$?e{Rd4x}A016j}(B^lXdw0~ow=Xl3Kg{osaMICcMg_Wq{YL3H+dH4CRE%xA7>(gnUyRTV?ZymAp3!3qnIThvj9OcvXIu?x(cNcdwiF9s>YAQ_iDEZty5)ASATk*Bc z?{vtwZ_{fJ!*PqKgkII4s^QWgp2Zf_9V@tE@FDnV-xSbo1OE>>EA&aej&Cb6`wg>| zoRv#S&idF*iW<1q)+@}C*(>%-FM9awt$!yyRE`{&9(*V#J>=?oM^6u*d;ab807|e( zB2Euro52BTLb1udX#)Im3*-Qa=AWR6=W#5u2TgqY#(rtS;-62Gdd$rC--wgKDm+p8 z2eLG&+s5?|a{T?QZtEf3HMr^~n(5jNivyJ{Jt57SOOl>YL5H8MCn$PqoQRyjIGIR6!McSj}=K2_g1ymX10j_RuN);{h*Y z4-XL?>QyFw#y(@nWZ7H$o(?+HsHka?@^PuKvyyJy$k3VL0Oc_fc-WxT{0cH zQZn(cZ~U1C*olM)K(YW9^FSX_C?u6GDr9kL6beb^i_cV#G4jd5+;?%>O8K?Hl(xxf zFsZwqA$Aa2Qu&v;>kMD>;$x;nGtxBjr+#T6U%5Xu@)7lkBR`krR^Vq$QsAeBN+nF9 zvUqSN5%2k+SG;E|UC1gPzNHlWGIu+!*_TfvK+<>E28#nDqR;gK{lWgR^EK#O1nTxM zjt8dM=1Va$`YrD=?>{cJgm;Aou1@ivZ95qHi4h ziHam}FsTn5eAEjE0I(BdU;w!$-1p4Yq%nCqFkyK5wUaeLJ7(n}dgL-NgrJO*22I-*ck-mMd2X<({1vWW%8D zk5lLNln*TPFU(QGD%$y2%AcftzDXV>Kv@C4fTW&h_kl+tghJO*HPE{9IcT-G4_5iT z_TwN9!cCXR*D&@`x5IE0;lY+?Nj$X|(P9p5nFWQvyKkfoi zv^$k&C{nW@mjg+48ZKJ28~HZ1uaF`@7Pjwwy*h~(H2<1`e?%2g!lNZl&|6#%*r5gdXThRob=^2*)vgbp?PuFe!+bS{Sot&$Tj+Wz7uXulA+eqRaI^{+ zW30y}N~;+p+kS@09#seG6e=$02){+u4THZVgSj0+-?kcz-3>SyQ9MPa(RjejpQSv8!u5mN#hL4sO2`mi88ryR9#BLLdic z4gLqj9gI%S={-M%vTgFF4VYU{O>|Q~Jw1o<93pp9?>-blk%ABFUEcl(krbZf!LDFn zt_4SZakn1Rfa2#Ft@rZGVm{e6xlG+))s8c-U)8=Fo7cO0yb=>o8qw07vbhx?L?$8V zz5z!ece44%Wq1^w&*q^sux;XgV$hoE|CHqZ`??wLoI+s{DM`8)DA%IIIzg(0m4wns27 zUmyiPWE)6!T(a8?gqENiT*Mw;pCf;UepLHXt9|@bKM5HuAD0H$k|;0>`96HFc=#h| z!q*`O0ouZc2KXoxx&ycZnL%EC;ae%9r7C@*U9A?c;0E0mfXHg{g66x-inFf`N8TU! z2}6;FPM9-5w>+Xc4ZXG@vWy^VyZq#5c9O#=Jkqao9Lm=@`VLzMLjCSXc~3Bc(e{zl zVjP2o4>i;nM5wokq>DgAJw8#*F#k$c0x^Q^s@?7eG6I7>Z!I$jx(3tg#61y+4&iKp z($rB=MX?vj8P_5*aEoDPWUKRYka!>=eKM|g6lsV5Cq3kGIkb*JUf~`L)g}w)|FUXv zT26Bp2KH5+K$jIL|Ku7B;j)VrW(=f*@Br^@g`L?bJgNh{&pu&eZZr?@o>y${M|wzm zfMHjSj>e63qscJy0&OK8kZ|1hA3F#B`ZjXgJfx6-9jkM_@(L&#tO`aAAmGZ4l%kam z12SAd&J}L;CpoF5=im#TP#45*2PoI)gZAt*gYVpcX+tmEO#kVYIsT2^(&z& z+Wo8X6CQ_0t$TV-7E!TMHo%pmpl1Xc#)k?xb287JjM^~f=I($w`k+z?!1?)*?vOl2 zi;?Qi5OZD|9Ovl9G{@4 zj->OM*dnk5gbq}mqUjCRYvCjntb{6;6s+X0p(=7Y2sWRGms#rki%@3JTo*&CEc1y1 zI5pqtZX}MeIb8uYI?j0TjSYxZ6qdVc2L&U3S8RkRJPD`%Bk8e>Ai^d=*oj8riM8WY z3vRznvC|C`N{PNt^SJnaNWgDIj?vAo^5_F^No})LTWdFs*0WdqgXWlh{M3jTp4gqi zhymbmuVz}%H`POh;icG_hB+e{c)-c&;)n~FPZ30(NSP1PIj{*4{VmMmoUpY}gEc|b zI241MW~$t4imC!lfvTpdRrO1&(%g;jA$5p23HtnamDdjZB9xc{3tLp-kf3j!_8#I4 zEmpM3QF~=upen6xVilTB!2pOrP2`70vruS8EDD1vbo3B4kU4uh`QLgV&>MHvq6g;WL@RI)ZB0BL55$Gv7^ z6&4i>0yY-#aFl=9!gRfum~U;l-MyX!ugSpLGn5fu`+g^ZwdW*ofpDBOxpmYOhNR3u zp-GtkvXu-dgoKw?XjN0l35;{K7gcCJSX7P~;v|rOy2-mEsE&H&iMo!ym9-tmgj5|b zD6vx>Vq6F}Z_q4->e1YdJT}n(ARJN2CL1)sY#}*XlWunhifSMgmclLZZqL&Q%!i`K zLfOuxIda|)d+JZg+ zwiXeCBNS@hLY~37*|>?^QjY6aAczupq5lx&)@`-7 zQ`V~|Tt76WtWOPnDi=o&{qxE?=%5wyVlNLcLtlNPQ|qg7eG~RK=BeD%+XBeNd&eH+orw!ZUsq1oyt_*{^48J&5YGQ8*U<{(ID zKedGNxR&5Aj!r!eI>MYy&=GFFlgk8|kC=_p5&YB<%C(N*Zz{*>D!7E@ak!O|BHq`U zp;UwlJL^XK8?+wO^mukXVM^qw;fxM%_)m5Cf|JvJ|lZ8Km3FdS)Ne%`Y1rBV%H1H(B)-g%oh!S2)&>;1b0jCKGt1!k7 zTWRQbnhC*yqxMu9kW7i*F-Z&cYN;Etl(1#)n{aVGgOO{2v}-Yu4dlbCFiWHqgAd<= z?N>uSoVX+^nZFjuH<9y|%3qVqE9AV{J^8PF-qgSULudbnZj*1R z!gzw7CZ)4UUaVg0QS`cwmr$wZu(vp=czr9OZ#0Ook9@u^(uhLo_xsH3Q|xRr_-qc7 zs;~%j`KIRXO@B+dDs${)95m^1e{~-A1sTP5;8byHTw02h0!%sck``=#oePn}-4oI8 zW;RU8H#aMV9FHC)$synSQ8tP`tP)U|ZI^)yAXYNl?w6Ob!fvKiaN%A=J$fRUeW!Fo zq&H30{@)6D`D^t5LY(wIlWgFP6iMlK6|#tR;ex^*bn>W5CvxvFKJ$tV+{xC8?DUni zh4G`i%mWDncXfjbtdSw|T3o7sNXy%e55$w#jHo}58*S@wny;z&4k< zi$7qrS|I;{<8(yQj9&Jz+tb+CR1rGOv%_vaa|AqbR#NhJ& z_dw%_hn*UDI*&&S?dR7+UJ%k%=sZ>gRH+)md{{k+SM#A7J*OZ{UDwFn8~6<@YXq1Q zgOuQXM(pBD45AXOt-%i+%RwH`Ud;(Yb*YG5V&DvGbY>d*2trV(0vn`mjHRAKWUHH` z)dafmlwOYt5q&|U2AO9>3Grb)K@YnzSvt7(!3*StKJ6z01xu1!`XB8PBNcs2IxmR$5Np6FV^}{obqgccE z7!xG1z~6_!1}+}P`AH79YRszTDN!oXPUeBx{@58kL^tmtmlPhuAONpX|6 z>v5Lw^5yU13vcgIRnfEld{_sC;YbL&i<-H7>bZ6-bdZWT1dbGo+`owMhiQ=OT;gZ&@2Im2C;Bse%>V9UZ@?xZJ zq~oasRri`_)oW%|ekzrN2@d?hRb0RVbsE1qLqhqhQ&sT^)(!RzhI1XGEM{)60$EvPtf3Tm<)cHKvH(9At(a$eKf^QIy-d;SlV_-mQ)}I0L!p1%d}T( z0I-O}ubJ=ruf(6lWn0K)WAhn5K{Ntqzb1e?mgat9@YYN~U)>K07}1h$_Zm3knu6Im zv?_2!6erSEDv|X@3sXxr89jmgb|+k1TuEG8qE-^0pe4`~QDlG?X#KN@S%EA9nUTUu zfu^pcfwO1fcPq_0I+^R4qbS77*FsF|N8kn1dBamG^6W{jK5XsacSV?jv znnB8vg4f8>h4d+d-KZt2%Aw6ADeJs3l=_LSth0^M4;R6p)Y`PXkZs}@4n2^aLm`X= zw~r?9xnXr;ZA5&=rG2cu7O@RP4hF&UG~sbEO+Tm6Ix`EwMFFufQnQl=NRd{(3cpQP=sJlWn!CAUwzE5FC7r_HPip3}qZTC2w1B1?Ie zjHhWX%?+J;>3N|OFU_kx4!_ebtqWybT3$Q&MTlqz^tipjN~Fj%WH%EQETaB=SeZ1I zA8cKH0hIX&E7%pawu=JCy&+l)s+E3tfZ@~%pu{l0RCYkl zy`OmjRFl_3be%E|WI7J7fQ2KgMZN%f!373dg_xX%k!*#x_F3{0JqA_SdIDzFX${rz z9a@}eZeJ z1k>L)n0Uz*EdN#3Vna>rbFo4C+?(h^dnw=tzm;CqE!0Q-oE+w*%^~R+X3HO7g$gIJ zLWNUf#Ujaee-1iS>)79*K*?+iCI2G&O5lS~}eqV)+Aml;_0D?+;`pdDk{?zCUnc%5Q2E9-SY^w7eO( z>XC1hvD2d<3Ze2JY$|fW49QckImYe4@Q!uL&tC?h00W!==hE$q@O$>>J?j4c`>6Uu z64g<{cSS$_VZk}y)a+29k`fQd34R@=c;uH*3bD1LGvQZ2>T-L)x~MOZg+)SGIDVL3 zUh-QVnz-9)!g$X$DxaG-+9lSP=aC;o_eqNj8X>-{_xs@ek=rn;d4LD|u-=A8{tB)k zq)vO~6Z%Vzd>mhJpB$3+p8q+M_fF@Om|&|YhHk1 z=GzsaiHoW0#ZB3+*h0DiacvFn;u$b4-p|+_>`^Nt9=Fw*?W%{fb+-`iy4#q_i$`g| z{o>0==?)^d`F?eYn7XnpB_AGOQ33m*?pqTspjKm8o7KkGmDGq-oD{dV0b5;gDyt+L zo-DYTm{5*5Ai=i*KDZ_bWQ997<2MRI%K`-FZp4qrOJmU8EBJfj3MUS^rRP z5sYHi|0P5i?!+4iVHgXRyqd?gforbC0Rp0Ho9YQ!CHmeyoFlN04R~?!lE5`rxtnqI zn!N2I66B#Y+&*C^NDiLVbgq|awe9N5>AE1^6)y$^wqGHtPv^a0Y^T-}y0dlkfHT1z z64x@`sS%w7U;@|trd|b}$d^;O#K1gWF%5Hv8YuFcRBZMjUK{Av*8qYc#V%mRJ#t=n zG4SF(rB_RH^B>O?soc44mt??=zL%TbRF* zS}U0|9rXGWMzUN1FBt5@Gw&uVpnpC(>h}Ag14E?d$yvWjbI3m#G{JZC?Jn9x;RW+6 z*%7o@icP-L#mgo3YAiC7h{-azfDmsThEBJYv4EUe78CBT86D^as^PGg=Qghet%j0c2M27O z7KoyKvQi)v;op>1+;o%6PI3Sms+BO^CO`eTQYB{RfK}z#ItO+F>R)Hqmz!9LFZ!u# zDyk}Ossvt@5>`fpf>s!)LT-tb`jem!^GXmN?u>c#Tc#p}_^0@uNi_2H??!cZ!=X0c7nl3q;=H)@S6T50DJJy3+`MoYu7p5>c48sN=bf z=ruIo(ya^7V29J}i8%65c~ljDDly1u%s8sLOsSX0W? z2DFpj;*LHm`OQleN!>g8S^h4B7^u2f_Er3SqIY46gM`Z6ST^2vCUxJ7J;}Slp;X{n zR73#BgFA18*DZ{5bya^<>p3V`S&5aT6A&y-&0$x^#+>BSc%ltUt5jqy|+0AZ& zGfVl~{td9%Ftrzt=N54AO`rPBNzik(eyd5sxfN_yz3KDMsjG1j6p@v3+Y3(K;)T|D zr6|qR7dPOvCN`J)IapIwuuzeXzRhdGAGm+plmN5&P3rwHaa}ix{M8@r>M5@h`$3gI z)3dyXKA^N?@@2m0=*aK${1O|+dY|V^+&aB7b+4uFM~;6O2NzT82zZf@XO}DzmA0X_ zqCj3D&UJV}bf3cyp!Q@v@Q-ssXw(cigT3E_dl1Y6+!NU3dvGta-h+Et8Tr`ND$7Bw z)xYjNxK|Ye3Gw&fs#OdxD@@u~?uL1^Y|T(%4h}GjwEZ=d$!LbXNh z-_C9Q?8u)?Wnwe7{ix5)m?9s!A8%Ku5pCO-`}N48QEx+H0I!9_ zrP)@rmOO(AjU;lc{}98sj}exA5Q=zfnOY$WrCKP?T%)(CB@{2UgyN;PP=ur7sD$F- zK80epB@|yxWy8PnQz&YPlZB!^hdws%|6%T3z~idQ{r{xt(6mq{Tq@xnAWE=+fug1a zVbUh;o;E4rY7i(<5Q88Dn$SRL2_}(Fhk<$oML|yW=sEQqLA)HK3Y?VIrlnjes1&MD zMRAuP7SYmzw7<{yU3+Hso?Hrg{^$Akfy~}}-QV@DcfGguF1IP(W}9MYwRRY~%igoC zqji*ZI_ioV*7GOW8wFtPjjUDM8(-xe>eW>H$9W5yYCm0$Q(M{lQN{NxM6bwszWjxp zZXpPPXT%>ED?;&4Zqu$SVw(rMS>K=jKN)j&0cRJq_S}amyMY4B-qv5R;zwNJD^Jx5 zKOcRF+jB1vm00i3dc^Iy_UZyJL@(N2_d~bX!|OY@=SJ7>@zSYB_{)Oy?-r&Ptnc@@ z-|omS@t3|f>=KW*f9o?t+aE#SZ!&$FZT7jWpe<(hy7I*0>vE#@MI4V=nnC^kE2&9Q zL9nUnhW0cPI{g3rIA2L0m0G~7aqpg!!E@YuA%FhbrG@>=_n-I;{@yYwMc`}nX*d}Q zmS7m8#EJ?K#y?u!b$SVSD;&?Z@pVPFlJ>HZOh*=(&9#B+bTLldpP^a(I+E)3w6^RV z_NysQLwTL*h2{Ea3x%H^S|-)pTJZ5*6lseT(ZPtw2RnX^mPgIDt67d&b`|8HNUFIV zHB~vIl_4L|jN|EUFOwEJkgG)d^)C$ngg@ugqs@=!U-^+?=Vw@bXKSGEG6MB|PD;;1^Dn>j|XDJDvCkN(dBE{2HXz%q*og zQwKzpjbZpS`^R50GJJX#wiMZo@TfKWnT3X`!BTIap-S^Wf2#b~kL4kP+`vCLztn9i z;9gSPMl0y?tg2BA|0TwueR^&{b!~teWTF5PrH{? zcnNp5h@cg6o~qAydo^ZakA8J*QKmUA$-BzG_Y{GG44AG_A;`sw!%Jubbilc4af`0P zlZF_@xdipSKkFLdrQNSPN^s4@j`^W85P)?!4pWb{%JVXw^$))w2~D|UP0kBjG~Iva z4k!$D9QUJa9W>t-Tw{zrcZ%y?o2wFkWYvR{e>0tpRb>mU@Ko0c#H6rQA9$^RFb9(B zp#N6YCGNt~XZ_0?0GwMFce@h~46oh8Ut7K){w<7<4o&>)?JDIF8D!#D-DB%OqU|^X z_6FtdSMFQCt=ujq@LKiZiGLRuC*5<66f(D1{AB-_I}HCGs%)loaPx8vkA8(lC&GD4 zrOob?$Nk@w>(kwp%hb?KtA!T%voq24n#pMD{kuLHLCHM6W|}JeMbX5_dY3+B?x^YQ z{tHLaoe0W?>u>jWek9U(r2cfKUl6H1F;Ydoe2~89$0Aka(=$!&{;h23BetKh39CI9 zNaed2Dxa|_Iyjn+{HgPTOVP3jT`QPHtv4rmwxP6b$EwCrNK8SP$8f;w|X zsr2#`D5_hL;BP~wZlxw!3Kahmd=J3{_vT$(H+Ea^*aQiC#Cs=bE-7k})V0ZC9!xC8 z9IJzdSQ}VO)&5^!q7yvTcxl;VoX-@m^_kPlShV-DX#Jw8fRc*5GFsPS#qZ#TP{8}H zGPHAwegQ^TtFl)AP#9pX3A$BQoPY$@lI^mZI% z8M*vf9PDI;#ICW-FikuTTcLg|(&T>%z@LK?N9FtR-Z< z