[
https://issues.apache.org/jira/browse/CAMEL-12584?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16522283#comment-16522283
]
ASF GitHub Bot commented on CAMEL-12584:
----------------------------------------
ragnarotech commented on a change in pull request #2392: CAMEL-12584:Allow seda
producers to offer data to the queue with timeout
URL: https://github.com/apache/camel/pull/2392#discussion_r197797775
##########
File path:
camel-core/src/main/java/org/apache/camel/component/seda/SedaProducer.java
##########
@@ -236,13 +238,20 @@ protected void addToQueue(Exchange exchange, boolean
copy) throws SedaConsumerNo
}
log.trace("Adding Exchange to queue: {}", target);
- if (blockWhenFull) {
+ if (blockWhenFull && offerTimeout == 0) {
try {
queue.put(target);
} catch (InterruptedException e) {
// ignore
log.debug("Put interrupted, are we stopping? {}", isStopping()
|| isStopped());
}
+ } else if(blockWhenFull && offerTimeout > 0) {
+ try {
+ queue.offer(target, offerTimeout, TimeUnit.MILLISECONDS);
Review comment:
I would've expected the result of this call to be checked. And on "false"
throw an IllegalStateException. Otherwise there is no way for the caller to
know if the message was successfully added.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Allow seda producers to offer data to the queue with timeout
> ------------------------------------------------------------
>
> Key: CAMEL-12584
> URL: https://issues.apache.org/jira/browse/CAMEL-12584
> Project: Camel
> Issue Type: Improvement
> Components: camel-core
> Affects Versions: 2.21.0
> Reporter: Andrew Doumaux
> Priority: Major
> Fix For: 2.23.0
>
>
> The seda producer only allows:
> * adding with possible exception if queue is full
> * blocking until space is available
> I'd like to suggest a third option for seda where a configured timeout can be
> added to the block case. Utilizing the .offer(timeout) method of the
> underlining java queue
> Use Case:
> I have a Apache NiFi system doing rest posts to my Apache Camel system. The
> camel system attempt to put the received message onto a seda queue which is
> backed by a SynchronousQueue. This causes an exception to occur if no
> threads are available to do the work requested, returns a service temporarily
> unavailable status to NiFi and Nifi pauses it's rest posts for a short delay.
> I'd be able to save on some network traffic I/O if I was able to say try and
> wait 100ms before giving up on putting the data on the queue.
>
> Concept of adding the "offer/timeout" was suggested in comments of CAMEL-1962
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)