This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch exchange-factory in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/exchange-factory by this push: new d0500ed CAMEL-16222: PooledExchangeFactory experiment d0500ed is described below commit d0500edf5055beb956e1e9fa7524382d620a9437 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Mon Feb 22 17:02:06 2021 +0100 CAMEL-16222: PooledExchangeFactory experiment --- .../camel/component/telegram/TelegramConsumer.java | 11 ++++++++++- .../camel/component/telegram/TelegramEndpoint.java | 10 ---------- .../component/thrift/server/ThriftMethodHandler.java | 18 ++++++++++++------ 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramConsumer.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramConsumer.java index c1d0c90..e5b86d2 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramConsumer.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramConsumer.java @@ -28,6 +28,8 @@ import org.apache.camel.support.ScheduledPollConsumer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.apache.camel.component.telegram.util.TelegramMessageHelper.populateExchange; + /** * A polling consumer that reads messages from a chat using the Telegram bot API. */ @@ -87,7 +89,7 @@ public class TelegramConsumer extends ScheduledPollConsumer { LOG.debug("Received update from Telegram service: {}", update); - Exchange exchange = endpoint.createExchange(update); + Exchange exchange = createExchange(update); getProcessor().process(exchange); } } @@ -99,4 +101,11 @@ public class TelegramConsumer extends ScheduledPollConsumer { LOG.debug("Next Telegram offset will be {}", this.offset); } } + + private Exchange createExchange(Update update) { + Exchange exchange = createExchange(true); + populateExchange(exchange, update); + return exchange; + } + } diff --git a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java index 3402f44..535b20f 100644 --- a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java +++ b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java @@ -22,11 +22,9 @@ import java.util.List; import org.apache.camel.Category; import org.apache.camel.Component; import org.apache.camel.Consumer; -import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.Producer; import org.apache.camel.RuntimeCamelException; -import org.apache.camel.component.telegram.model.Update; import org.apache.camel.component.telegram.service.TelegramServiceRestBotAPIAdapter; import org.apache.camel.component.webhook.WebhookCapableEndpoint; import org.apache.camel.component.webhook.WebhookConfiguration; @@ -43,8 +41,6 @@ import org.asynchttpclient.proxy.ProxyType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import static org.apache.camel.component.telegram.util.TelegramMessageHelper.populateExchange; - /** * Send and receive messages acting as a Telegram Bot <a href="https://core.telegram.org/bots/api">Telegram Bot API</a>. */ @@ -129,12 +125,6 @@ public class TelegramEndpoint extends ScheduledPollEndpoint implements WebhookCa return consumer; } - public Exchange createExchange(Update update) { - Exchange exchange = super.createExchange(); - populateExchange(exchange, update); - return exchange; - } - @Override public Processor createWebhookHandler(Processor next) { return new TelegramWebhookProcessor(next); diff --git a/components/camel-thrift/src/main/java/org/apache/camel/component/thrift/server/ThriftMethodHandler.java b/components/camel-thrift/src/main/java/org/apache/camel/component/thrift/server/ThriftMethodHandler.java index b2631c0..eca3382 100644 --- a/components/camel-thrift/src/main/java/org/apache/camel/component/thrift/server/ThriftMethodHandler.java +++ b/components/camel-thrift/src/main/java/org/apache/camel/component/thrift/server/ThriftMethodHandler.java @@ -50,7 +50,7 @@ public class ThriftMethodHandler implements MethodHandler { // {org.apache.thrift.async.AsyncMethodCallback} if (args.length > 0 && args[args.length - 1] instanceof AsyncMethodCallback) { AsyncMethodCallback callback = (AsyncMethodCallback) args[args.length - 1]; - Exchange exchange = endpoint.createExchange(); + Exchange exchange = consumer.createExchange(false); if (args.length >= 2) { exchange.getIn().setBody(Arrays.asList(Arrays.copyOfRange(args, 0, args.length - 1))); } else { @@ -84,16 +84,22 @@ public class ThriftMethodHandler implements MethodHandler { callback.onError(new TException("Unable process null message")); } + consumer.releaseExchange(exchange, false); callback.onComplete(response); }); } else { - Exchange exchange = endpoint.createExchange(); - exchange.getIn().setBody(Arrays.asList(args)); - exchange.getIn().setHeader(ThriftConstants.THRIFT_METHOD_NAME_HEADER, thisMethod.getName()); + Object responseBody = null; + Exchange exchange = consumer.createExchange(false); + try { + exchange.getIn().setBody(Arrays.asList(args)); + exchange.getIn().setHeader(ThriftConstants.THRIFT_METHOD_NAME_HEADER, thisMethod.getName()); - consumer.getProcessor().process(exchange); + consumer.getProcessor().process(exchange); + responseBody = exchange.getIn().getBody(thisMethod.getReturnType()); + } finally { + consumer.releaseExchange(exchange, false); + } - Object responseBody = exchange.getIn().getBody(thisMethod.getReturnType()); if (responseBody == null && !thisMethod.getReturnType().equals(Void.TYPE)) { throw new TApplicationException("Return type requires not empty body"); }