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 <[email protected]>
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");
}