尝试从Grails中的自定义groovy文件加载spring bean 2.3.7.我之前已经问过这个问题,但是经过几个小时的搜索,我无法找到从类路径加载的一致方法.
resources.groovy为多个自定义资源文件grails-app/conf/spring//## grails-app/conf/spring/MyBeansConfig.groovy
beans {
testsvc(TestService){
msg = 'hello'
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我正在使用beans {},而不是beans = {},显然它有所不同:
resources.groovy
这有效......
beans = {
loadBeans 'file:C:\\Proj\Test1\grails-app\\conf\\spring\\MyBeansConfig.groovy'
}
Run Code Online (Sandbox Code Playgroud)
......根据文档,这也应该,但不是:
importBeans("classpath:*MyBeansConfig.groovy")
Run Code Online (Sandbox Code Playgroud)
(为Grails 2.3.7工作)
根据lukelazarovic的建议,这种方法有效,因为Grails会自动将groovy文件复制(不编译)src/java到类路径中; 在日食和战争部署中工作正常:
//bean config files here
src/java/MyBeansConfig.groovy
src/java/FooBeansConfig.groovy
//resources.groovy
loadBeans('classpath*:*BeansConfig.groovy')
Run Code Online (Sandbox Code Playgroud)
这种方法允许自定义bean配置文件grails-app/conf/spring(对ideascultor和mark.esher的信用 )
//bean config files here …Run Code Online (Sandbox Code Playgroud) 我有一个带有ServiceActivator方法的Component类:
@Component("payloadService")
public class PayloadService {
@Transactional
@ServiceActivator
@Description("Pre-check service")
public Message<String> preCheck(Message<String> message) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个Spring Integration 4 Java DSL流程,它调用ServiceActivator的preCheck方法,如下所示:
IntegrationFlows.from("input.ch")
.handle("payloadService", "preCheck")
...
.get();
Run Code Online (Sandbox Code Playgroud)
我现在正在尝试向服务调用添加重试建议(如http://docs.spring.io/spring-integration/reference/htmlsingle/#retry-config所示)但我想以Java DSL形式执行此操作如https://github.com/spring-projects/spring-integration-extensions/wiki/Spring-Integration-Java-DSL-Reference#dsl-and-endpoint-configuration中所述.
但是我无法弄清楚如何在实践中将这个建议应用到我的DSL流程中.可能会挣扎,因为我还不太熟悉lambdas等.
有人可以给我一些关于如何做到这一点的指示吗?
PM,提前谢谢
我正在使用 Spring Integration 来开发我的集成场景。当我不得不写一些日志来提供一些信息时,我是这样写的:
@Bean
IntegrationFlow blacklist(BlacklistService service) {
return m -> m
.wireTap(f -> f.handle(t -> log.info("Adding email source address in blacklist...")))
.<MessageHandlingException, Blacklist>transform(p -> SourceBlacklist.of((Email) p.getFailedMessage().getHeaders().get(IntegrationConstants.MailSender.EMAIL)))
.wireTap(f -> f.handle(t -> log.info("Email source address added to blacklist.")))
.handle(service, "voidSave");
}
Run Code Online (Sandbox Code Playgroud)
我正在使用带有 lambda 和句柄的窃听来记录我的消息。有没有更好的方法使用 Java DSL 使用 Spring Integration 编写日志?
谢谢。
我想检查一下:
<simple>${body} contains 'verification'</simple>
Run Code Online (Sandbox Code Playgroud)
身体是json:
{"verification": {"email": "bb@wp.pl", "code": "1234"}}
Run Code Online (Sandbox Code Playgroud)
但这种情况不起作用.我也试过了:
<simple>${body} contains 'verification'</simple>
<simple>${bodyAs(String)} contains 'verification'</simple>
<simple>${body.verification} != null</simple>
Run Code Online (Sandbox Code Playgroud)
你能告诉我什么吗?
我开始为jenkins(以前的工作流程)管道工作
我正在使用IntelliJ作为IDE
是否有GDSL文档的来源或某种方式我可以知道哪些groovy在管道中可接受,哪些不是?
还有一种方法,我可以在检查我的Jenkinsfile之前测试运行GDSL吗?
我正在尝试从文件系统中获取JSON文件,并尝试将文件插入MarkLogic数据库.
<route id="file_upload">
<!-- incoming requests from the file is routed -->
<from uri="file:/E:/camel/input"/>
<to uri="http://localhost:8005/v1/documents?uri/patents/test.json"/>
</route>
Run Code Online (Sandbox Code Playgroud)
用户名和密码为:admin/admin,用于在8005上运行的MarkLogic REST实例
正如标题所说,我正在寻找一个关于 DSL 流中的 errorHandling 的好例子。具体来说,我希望处理来自服务激活器的错误。
例子:
IntegrationFlows.from(Amqp.inboundAdapter(simpleMessageListenerContainer()))
.transform(new JsonToObjectTransformer(AlbumDescriptor.class))
.handle(AlbumDescriptor.class, (p,h) -> transformXml(p))
.transform(new ObjectToJsonTransformer())
.handle(Amqp.outboundAdapter(rabbitTemplate).routingKey("xml-transformed"))
.get();
Run Code Online (Sandbox Code Playgroud)
如果我的函数transformXml(p)抛出异常,我如何使它转到特定的 errorChannel。
如果没有抛出异常,一切都会按照我想要的方式工作。
目前,如果从此函数抛出异常,我会收到以下异常:
2014-09-17 15:26:28.566 WARN 16339 --- [cTaskExecutor-1] s.a.r.l.ConditionalRejectingErrorHandler : Execution of Rabbit message listener failed.
org.springframework.amqp.rabbit.listener.ListenerExecutionFailedException: Listener threw exception
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:758)
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:653)
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:576)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$001(SimpleMessageListenerContainer.java:78)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$1.invokeListener(SimpleMessageListenerContainer.java:161)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:1177)
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:559)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:950)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:934)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$600(SimpleMessageListenerContainer.java:78)
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1045)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.messaging.MessageHandlingException: java.lang.reflect.InvocationTargetException
at org.springframework.integration.dsl.LambdaMessageProcessor.processMessage(LambdaMessageProcessor.java:125)
at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:71)
at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:170)
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78)
at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)
at …Run Code Online (Sandbox Code Playgroud) 我目前正在试用 Apache 骆驼(作为路由引擎)。我知道 Camel 支持多个 DSL,并且可以使用 Java (Java DSL) 或 Spring (Spring DSL) 进行配置。
问题:
我有以下 Spring DSL 配置。这个想法是,如果传入的请求具有名为“name”的标头参数,它将命中 when 子句,否则将请求路由到谷歌:
<camel:route>
<camel:from uri="servlet:///test" />
<camel:choice>
<camel:when>
<camel:header>name</camel:header>
<camel:transform>
<camel:simple>Hello ${header.name} how are you?</camel:simple>
</camel:transform>
</camel:when>
<camel:otherwise>
<camel:to uri="http://www.google.com?bridgeEndpoint=true" />
</camel:otherwise>
</camel:choice>
</camel:route>
Run Code Online (Sandbox Code Playgroud)
我希望上述配置仅适用于 Header Param。但是,我注意到此配置甚至适用于查询参数,如以下请求所示:
http://localhost:8080/<war-context>/test?name=test
Run Code Online (Sandbox Code Playgroud)
有没有办法确保它仅适用于标题参数?
spring-dsl ×8
spring ×4
apache-camel ×3
java ×3
cloudbees ×1
dsl ×1
grails ×1
groovy ×1
http-headers ×1
jenkins ×1
marklogic ×1
rest ×1