瀏覽代碼

fixed issue #2286 , ArithmeticException zero

agapple 5 年之前
父節點
當前提交
b64a3e301a
共有 1 個文件被更改,包括 18 次插入11 次删除
  1. 18 11
      server/src/main/java/com/alibaba/otter/canal/rocketmq/CanalRocketMQProducer.java

+ 18 - 11
server/src/main/java/com/alibaba/otter/canal/rocketmq/CanalRocketMQProducer.java

@@ -249,20 +249,27 @@ public class CanalRocketMQProducer extends AbstractMQProducer implements CanalMQ
             // 批量发送
             List<MessageQueue> queues = topicInfo.getMessageQueueList();
             int size = queues.size();
-            MessageQueue queue = null;
-            if (partition > queues.size()) {
-                queue = queues.get(partition % size);
+            if (size <= 0) {
+                // 可能是第一次创建
+                for (Message message : messages) {
+                    sendMessage(message, partition);
+                }
             } else {
-                queue = queues.get(partition);
-            }
+                MessageQueue queue = null;
+                if (partition > size) {
+                    queue = queues.get(partition % size);
+                } else {
+                    queue = queues.get(partition);
+                }
 
-            try {
-                SendResult sendResult = this.defaultMQProducer.send(messages, queue);
-                if (logger.isDebugEnabled()) {
-                    logger.debug("Send Message Result: {}", sendResult);
+                try {
+                    SendResult sendResult = this.defaultMQProducer.send(messages, queue);
+                    if (logger.isDebugEnabled()) {
+                        logger.debug("Send Message Result: {}", sendResult);
+                    }
+                } catch (Throwable e) {
+                    throw new RuntimeException(e);
                 }
-            } catch (Throwable e) {
-                throw new RuntimeException(e);
             }
         }
     }