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

Rhuan Rocha commented on CAMEL-19734:
-------------------------------------

Hi [~richturner], I'm trying to reproduce the issue you described, but I 
haven't been successful. [^camel-seda-reproducer.zip]

Look at this 
{code:java}
public class SedaTest extends CamelTestSupport {

    private Logger logger = LoggerFactory.getLogger(SedaTest.class);
    @Test
    public void testMock() throws Exception {
        getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");

        ExecutorService WORKER_THREAD_POOL = Executors.newFixedThreadPool(3);
        template.sendBody("seda://ClientInboundQueue-one", "Hello World");
        template.sendBody("seda://ClientInboundQueue-two", "Hello World");
        template.sendBody("seda://ClientInboundQueue-tree", "Hello World");
        MockEndpoint.assertIsSatisfied(context);
    }

    @Override
    protected RoutesBuilder createRouteBuilder() {
        context.setMessageHistory(true);
        return new RouteBuilder() {
            @Override
            public void configure() {
                from("seda://ClientInboundQueue-one?" +
                        "multipleConsumers=true&" +
                        "concurrentConsumers=2&" +
                        "waitForTaskToComplete=IfReplyExpected&" +
                        "purgeWhenStopping=true&" +
                        "discardIfNoConsumers=true&" +
                        "limitConcurrentConsumers=false&" +
                        "size=1000")
                        .process(exchange -> logger.info("Executing 
ClientInboundQueue-one"))
                        .to("seda://AttributeEventQueue");

                from("seda://ClientInboundQueue-two?" +
                        "multipleConsumers=true&" +
                        "concurrentConsumers=2&" +
                        "waitForTaskToComplete=IfReplyExpected&" +
                        "purgeWhenStopping=true&" +
                        "discardIfNoConsumers=true&" +
                        "limitConcurrentConsumers=false&" +
                        "size=1000")
                        .process(exchange -> logger.info("Executing 
ClientInboundQueue-two"))
                        .to("seda://AttributeEventQueue");

                from("seda://ClientInboundQueue-tree?" +
                        "multipleConsumers=true&" +
                        "concurrentConsumers=2&" +
                        "waitForTaskToComplete=IfReplyExpected&" +
                        "purgeWhenStopping=true&" +
                        "discardIfNoConsumers=true&" +
                        "limitConcurrentConsumers=false&" +
                        "size=1000")
                        .process(exchange -> logger.info("Executing 
ClientInboundQueue-tree"))
                        .to("seda://AttributeEventQueue");

                from("seda://AttributeEventQueue?" +
                        "waitForTaskToComplete=IfReplyExpected&" +
                        "timeout=10000&" +
                        "purgeWhenStopping=true&" +
                        "discardIfNoConsumers=false&size=2")
                        .process(exchange -> logger.info("Executing 
AttributeEventQueue"))
                        .to("mock:result");

            }
        };
    }

} {code}
I'm attaching the sample to you. Could you tell me if it is your scenario or if 
I'm missing something?

 

This is my results, as expected:

 
{code:java}
[seda://ClientInboundQueue-tree] DefaultErrorHandler            ERROR Failed 
delivery for (MessageId: AE8B1D99CFA3461-0000000000000008 on ExchangeId: 
AE8B1D99CFA3461-0000000000000008). Exhausted after delivery attempt: 1 caught: 
java.lang.IllegalStateException: Queue fullMessage History (source location is 
disabled)
---------------------------------------------------------------------------------------------------------------------------------------
Source                                   ID                             
Processor                                          Elapsed (ms)
                                         route3/route3                  
from[seda://ClientInboundQueue-tree?concurrentCons   1051803531
                                         route3/process3                
Processor@0x2755d705                                          0
                                         route3/to3                     
seda://AttributeEventQueue                                    0Stacktrace
---------------------------------------------------------------------------------------------------------------------------------------
java.lang.IllegalStateException: Queue full {code}
 

 

> SEDA endpoint with multiple consumers produces strange message history from 
> error handler
> -----------------------------------------------------------------------------------------
>
>                 Key: CAMEL-19734
>                 URL: https://issues.apache.org/jira/browse/CAMEL-19734
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 3.20.6
>            Reporter: Rich T
>            Assignee: Rhuan Rocha
>            Priority: Minor
>         Attachments: camel-seda-reproducer.zip
>
>
> I have a SEDA endpoint with multiple consumers enabled and three consumers 
> configured and default error handler is in place.
> If one of the consumer queues becomes full then with the default error 
> handler the message history is output but the first item is always one of the 
> other consumers with a really large elapsed time (the system hasn't even been 
> running this long) and then this is followed by the consumer route that 
> actually threw the exception:
>  
>  
> {code:java}
> Message History (source location is disabled)
> ---------------------------------------------------------------------------------------------------------------------------------------
> Source                                   ID                             
> Processor                                          Elapsed (ms)
>                                          ClientInbound-ReadSimulatorSta 
> from[seda://ClientInboundQueue?concurrentConsumers   1201857883
>                                          ClientInbound-EventProcessor/p 
> Processor@0x713c4d95                                          0
>                                          ClientInbound-EventProcessor/c 
> choice[when[{body instanceof xxx                              0
>                                          ClientInbound-EventProcessor/t 
> seda://AttributeEventQueue?waitForTaskToComplete=I            0
> Stacktrace
> ---------------------------------------------------------------------------------------------------------------------------------------
> java.lang.IllegalStateException: Queue full
> {code}
> So from the above `ClientInbound-ReadSimulatorState` is one of the multiple 
> consumers that doesn't throw an exception.
> `ClientInbound-EventProcessor` is the route that has a full queue which 
> results in the queue full exception.
> I would expect to only see the `ClientInbound-EventProcessor` in the message 
> history here; the first route in the history log seems to alternate between 
> the two consumers that didn't generate the exception on successive error logs 
> but they always have this strange elapsed time, here's a log showing the 
> third consumer listed first:
>  
>  
> {code:java}
> Message History (source location is disabled)
> ---------------------------------------------------------------------------------------------------------------------------------------
> Source                                   ID                             
> Processor                                          Elapsed (ms)
>                                          ClientInbound-Query/ClientInbo 
> from[seda://ClientInboundQueue?concurrentConsumers   1201857882
>                                          ClientInbound-EventProcessor/p 
> Processor@0x713c4d95                                          0
>                                          ClientInbound-EventProcessor/c 
> choice[when[{body instanceof xxx                              0
>                                          ClientInbound-EventProcessor/t 
> seda://AttributeEventQueue?waitForTaskToComplete=I            0
> Stacktrace
> ---------------------------------------------------------------------------------------------------------------------------------------
> java.lang.IllegalStateException: Queue full
> {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to