[
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)