[ 
https://issues.apache.org/jira/browse/JAMES-2295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16542860#comment-16542860
 ] 

ASF GitHub Bot commented on JAMES-2295:
---------------------------------------

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

    https://github.com/apache/james-project/pull/127#discussion_r202311446
  
    --- Diff: 
server/queue/queue-jms/src/test/java/org/apache/james/queue/jms/JMSMailQueueTest.java
 ---
    @@ -49,7 +49,8 @@ public void setUp(BrokerService broker) throws Exception {
             RawMailQueueItemDecoratorFactory mailQueueItemDecoratorFactory = 
new RawMailQueueItemDecoratorFactory();
             NoopMetricFactory metricFactory = new NoopMetricFactory();
             String queueName = BrokerExtension.generateRandomQueueName(broker);
    -        mailQueue = new JMSMailQueue(connectionFactory, 
mailQueueItemDecoratorFactory, queueName, metricFactory);
    +        ConsumerOptions consumerOptions = name -> name + 
"?consumer.prefetchSize=0";
    --- End diff --
    
    > The problem with that kind of API is that I got not idea about values I 
should pass. We can still expose the put you suggest, but we need a 
self-discoverable API for options we know.
    
    Agree with that, but as far as I know JMS spec does not support things like 
that. Although we can provide pretty well documentation on that. In ActiveMQ 
case the builder API is pretty straightforward and easy do understand (from API 
design point of view).
    
    > Why using a constructor when I can use a builder? Isn't it better to 
enforce builder use?
    
    I thought about when user already has ready . Probably we should expose 
also the `putAll(Map<String, String>)` method in builder to not force user 
iterate over and add options one by one.


> JMS mailqueue deadlock when a single thread issue several consume
> -----------------------------------------------------------------
>
>                 Key: JAMES-2295
>                 URL: https://issues.apache.org/jira/browse/JAMES-2295
>             Project: James Server
>          Issue Type: Bug
>          Components: Queue
>    Affects Versions: 3.0.0, master, 3.0.1
>            Reporter: Tellier Benoit
>            Priority: Major
>              Labels: bug
>
> This will lead to a dead lock:
> {code:java}
>         MailQueue.MailQueueItem mailQueueItem1 = getMailQueue().deQueue();
>         MailQueue.MailQueueItem mailQueueItem2 = getMailQueue().deQueue();
>         mailQueueItem1.done(true);
>         mailQueueItem2.done(true);
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to