Можно ли создать в модуле Mule 4 Scope с доступом к соединению?
Я следую примерам, включенным в документацию, связанную с созданием модуля и его различных компонентов. я смог создатьOperations
которые могут использовать соединения, но теперь я пытаюсь сделать что-то подобное сScope
вместо.
Я пробовал добавлять@Connection MyConnection connection
как один из аргументов методов в моем модуле, как показано ниже.
public void logDecorator(@Connection MyConnection connection, Chain operations,
CompletionCallback<Object, Object> callback) {
logger.debug("Invoking child operations");
operations.process(
result -> {
logger.debug("Done: {}", result.getOutput());
callback.success(result);
},
(error, previous) -> {
logger.error(error.getMessage());
callback.error(error);
});
}
Но когда я собираю модуль, я получаю сообщение об ошибке, что это не разрешено.
Error executing: org.mule.runtime.extension.api.exception.IllegalOperationModelDefinitionException: Scope 'logDecorator' requires a connection, but that is not allowed, remove such parameter -> [Help 1]
Есть ли способ добавить ссылку на соединение, которое позволило бы мне использовать его внутриlogDecorator
?
2 ответа
public void logDecorator(Chain operations, CompletionCallback<Object, Object> callback) {
logger.debug("Invoking child operations");
// Get the connection that is defined for the scope
MyConnection connection = getConnection();
operations.process(
result -> {
logger.debug("Done: {}", result.getOutput());
callback.success(result);
},
(error, previous) -> {
logger.error(error.getMessage());
callback.error(error);
});
}
Как насчет чего-то подобного?
Области не могут получить соединение, как описано в документации :
У областей есть некоторые ограничения, которые отличают их от операций. По определению области не могут зависеть или получать конкретную конфигурацию или соединение.