activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gaohoward <...@git.apache.org>
Subject [GitHub] activemq-artemis pull request #2371: ARTEMIS-2097 Pause and Block Producers
Date Mon, 15 Oct 2018 23:51:46 GMT
Github user gaohoward commented on a diff in the pull request:

    https://github.com/apache/activemq-artemis/pull/2371#discussion_r225353155
  
    --- Diff: artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ServerSessionImpl.java
---
    @@ -1789,6 +1790,11 @@ public synchronized RoutingStatus doSend(final Transaction tx,
     
           AddressInfo art = getAddressAndRoutingType(new AddressInfo(msg.getAddressSimpleString(),
routingType));
     
    +      if (postOffice.isAddressBlocked(msg.getAddressSimpleString())) {
    --- End diff --
    
    @clebertsuconic reply here.
    I can think of 2 difficulties using credits:
    1. Some clients (like mqtt, stomp) are not supporting flow control so they can't be blocked
using credits.
    2. producers are not necessarily bound to one address, they can send messages to different
addresses (for example one producer can send one message to address1, and the next one to
address2. It it's blocked on address1, the next message also be blocked)
    
    If we simply block the sending threads, it will holding up broker threads (like you said
OME). Besides the producer may have call-timeout exception.
    
    By throwing a proper exception we can let client to handle their producer properly without
blocking any thing.



---

Mime
View raw message