Github user Jaskey commented on a diff in the pull request:

    https://github.com/apache/incubator-rocketmq/pull/64#discussion_r104592589
  
    --- Diff: 
client/src/main/java/org/apache/rocketmq/client/impl/consumer/ConsumeMessageOrderlyService.java
 ---
    @@ -92,10 +92,22 @@ public void run() {
             }
         }
     
    -    public void shutdown() {
    +    @Override
    +    public void shutdown(long awaitTerminateMillis) {
             this.stopped = true;
             this.scheduledExecutorService.shutdown();
             this.consumeExecutor.shutdown();
    +        //await to consume
    +        if (awaitTerminateMillis > 0) {
    +            try {
    +                
this.consumeExecutor.awaitTermination(awaitTerminateMillis,TimeUnit.MILLISECONDS);
    +                if (!this.consumeExecutor.isTerminated()) log.info("There 
are messages still being consumed in thread pool, but not going to await them 
anymore. Have awaited for {} ms",awaitTerminateMillis);
    --- End diff --
    
    @zhouxinyu In my option, rocketmq should have no right to interrupt what 
dev's business are doing, we may be doing some time-cost job which are doing 
transcation or inserting database, we should leave the task running if executor 
is still not terminated.
    
    Besides, since the old version has not termination millis, so 0 of 
termination millis is the default  behavior , shutdown now will cost task being 
interrupt/cancel immediately which is not proper in my opinion.
    
    I have updated the pr , but still using my old method, please review and 
let's discuss more about it.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to