动机:我需要在路由到Sftp出站网关之前设置委托SessionFactory的threadKey,然后取消设置threadKey。
根据租户的不同,我需要使用不同的Sftp用户帐户。在我的应用程序中,用户帐户是一个配置问题。yml,我不想为每个新租户写单独的路由。
public IntegrationFlow aDynamicSftpFlow() {
f -> f
.handle(tenantSessionDefine()) // how can I use a lambda instead?
.handle(Sftp.outboundGateway(delegatingSessionFactory, ...))
.handle(...) // undefine sftp session
}
设置threadKey需要消息
public class TenantSessionDefine {
private DelegatingSessionFactory delegatingSessionFactory;
public TenantSessionDefine(DelegatingSessionFactory delegatingSessionFactory) {
this.delegatingSessionFactory = delegatingSessionFactory;
}
public Message<?> defineSession(Message<?> message) {
return delegatingSessionFactory.setThreadKey(message, message.getHeaders()
.get("tenantId", String.class));
// used by SessionFactoryLocator
}
}
我想把它写成lambda,比如
.handle(message -> delegatingSessionFactory.setThreadKey(message,
message.getPayload().getTenant())
但这并不容易。可以与接受消息的句柄()一起使用的lambda
这只是一个示例,我希望我可以在lambda中使用带有消息的
handle()
,而不结束流。我该怎么做?
使现代化
DelegatingSessionFactory不是一个特别合适的例子。由于设置和清除线程键应该在sftp调用之前和之后进行,因此通知比在调用之前和之后定义处理程序更合适。
知道了。handle()的javadoc表示
如果您需要访问整个消息,请使用句柄(Class, GenericHandler)
。
Class参数必须是Message。类:
.handle(Message.class,
(message, headers) -> sftpSessionFactory
.setThreadKey(message, headers.get("tenantId")))
我有以下2个组件,它们应该首先从Mongo中删除文档,然后从Elastic中删除。 主要流程: 服务: 不幸的是,deleteDocumentInMongo从未被调用。我可以在日志中看到bean已正确注册。 我是做错了什么,还是你需要更多的调试信息?如果我窃听手柄,则deleteDocumentInES。执行输入,但忽略mongo流。
问题内容: CLLocationManager的委托方法 didChangeAuthorizationStatus和didUpdateToLocation 没有接到电话。 位置始终使用说明键已添加到info.plist中,并且在我首次启动应用程序时也收到通知。 我能够看到谷歌地图,但是我看不到当前位置,当我更改位置时,它不会更新。基本上不会调用委托方法。 //码 问题答案: 在您的代码中,您正在使
在Kotlin中使用类委托时,可以覆盖成员。然而,关于代表团的参考页上说: 但是,请注意,以这种方式重写的成员不会从委托对象的成员中调用,委托对象只能访问其自己的接口成员实现。 我想重写委托对象的方法使用的属性,以便委托对象的方法调用此重写属性。正如文档所述,用关键字覆盖属性并不能实现这一点。有什么方法可以让我实现这种行为吗?如果不是,这是否表明我应该改用继承? 这是一个代码示例: 这段代码打印“
ILRuntime中使用委托 如果只在热更新的DLL项目中使用的委托,是不需要任何额外操作的,就跟在通常的C#里那样使用即可 如果你需要将委托实例传给ILRuntime外部使用,那则根据情况,你需要额外添加适配器或者转换器。 需要注意的是,一些编译器功能也会生成将委托传出给外部使用的代码,例如: Linq当中where xxxx == xxx,会需要将xxx == xxx这个作为lambda表达式
本文向大家介绍C#中委托(Delegates)的使用方法详解,包括了C#中委托(Delegates)的使用方法详解的使用技巧和注意事项,需要的朋友参考一下 1. 委托是什么? 其实,我一直思考如何讲解委托,才能把委托说得更透彻。说实话,每个人都委托都有不同的见解,因为看问题的角度不同。个人认为,可以从以下2点来理解: (1) 从数据结构来讲,委托是和类一样是一种用户自定义类型。 (2) 从设计
本文向大家介绍PHP __call()方法实现委托示例,包括了PHP __call()方法实现委托示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP __call()方法实现委托。分享给大家供大家参考,具体如下: 委托是指一个对象转发或者委托一个请求给另一个对象,被委托的一方替原先对象处理请求。这类似于继承,和在子类中调用父类的方法有点儿相似。 但在继承时,父类与子类的关系是固定的