我们有使用XML配置的Quartz Job+File Integration adapter,并且工作得很好,但是,由于尝试将这些配置转移到Spring Boot,并将这些配置转移到注释
下面是XML配置,我正在为它寻找等效的注释和绑定
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="schedulerContextAsMap">
<map>
<entry key="inboundadapterendpoint"><ref bean="incomingfiles" /></entry>
<entry key="inboundendpointtrigger"><ref bean="incomingfiles-trigger"/></entry>
</map>
</property>
</bean>
<bean id="inboundendpointtrigger" class="abc.xyz.Trigger" />
<file:inbound-channel-adapter id="incomingfiles" channel="xyz" directory="" scanner="recursiveScanner" auto-startup="false" prevent-duplicates="false">
<integration:poller task-executor="fileChannelTaskExecutor" trigger="incomingfiles-trigger" max-messages-per-poll="1">
</integration:poller>
</file:inbound-channel-adapter>
我们如何获得入站适配器Bean&使用下面的注释创建的轮询器触发器是在spring Boot quartz config中的调度器工厂创建过程中注入的
@Bean
@InboundChannelAdapter(poller = @Poller(trigger="customTrigger")
public MessageSource<File> fileReadingMessageSource() {
}
提前感谢您对此提供的任何帮助或建议
Artem Bilan非常感谢你的回复。
跟进问题后试用答复中提供的代码
@Configuration
public class QuartzConfig {
@Autowired
private CustomTrigger inboundEndPointTrigger;
@Autowired
private AbstractEndpoint incomingFiles;
@Bean
public SchedulerFactoryBean schedulerFactoryBean() {
System.out.println("incomingFiles value is " + incomingFiles);
}
}
@Bean(name = "incomingFiles")
@InboundChannelAdapter(autoStartup = "false", value = "xyz", poller = @Poller(trigger = "inboundEndPointTrigger", maxMessagesPerPoll = "2", errorChannel = "abc"))
public MessageSource<File> fileReadingMessageSource() {
}
上面的输出是errorLogger的参考,而不是入站通道适配器。
incomingFiles值为bean“_org.springframework.integration.errorlogger”
如何将名为incomingFiles的入站适配器绑定到调度程序工厂?
@Bean
@EndPointId("incomingFiles")
@InboundChannelAdapter(autoStartup = "false", value = "xyz", poller = @Poller(trigger = "inboundEndPointTrigger", maxMessagesPerPoll = "2", errorChannel = "abc"))
public MessageSource<File> fileReadingMessageSource() {
}
System.out.println("incomingFiles value is " + incomingFiles); print in QuartzConfig class above is still giving a reference to Logger object
incomingFiles value is bean '_org.springframework.integration.errorLogger'
在下面的SO(Spring Cloud Stream+Quartz)中找到了关于如何为入站通道适配器创建bean的响应。
Since the AbstractEndPoint is returning the logger reference instead of InboundChannelAdapter ,
is it ok to get the Inbound Adapter channel bean reference via application context in scheduler factory ? are there any issues with this ?
try {
ApplicationContext applicationContext = (ApplicationContext) context.getScheduler().getContext().get("applicationContext");
AbstractEndpoint abstractEndPoint = (AbstractEndpoint) applicationContext
.getBean("fileConfig.fileReadingMessageSource.inboundChannelAdapter");
} catch(SchedulerException ex) {
}
fileConfig is the Spring File integration configuration class name where InboundChannelAdapter is defined..
我不知道为什么你关闭了你的旧问题-你可以只是编辑它适当,我们将有一个链接到其他问题。但不管怎样,答案是这样的:
任何XML bean定义都可以用@bean
方法定义在Java&annotation config中声明。
因此,
在Java中的格式如下:
@Bean
Trigger customTrigger() {
return new abc.xyz.Trigger();
}
您已经在@poller
中使用它的bean名称作为引用。
对SchedulerFactoryBean
也是这样做的,并在@bean
方法中配置它的setSchedulerContextAsMap()
。您已经有一个customTrigger()
bean可供参考,并且可以基于@InboundChannelAdapter
访问SourcePollingChannelAdapter
endpoint,您需要注入@bean
方法。差不多是这样的:
@Bean
SchedulerFactoryBean schedulerFactory(Trigger trigger, SourcePollingChannelAdapter endpoint) {
}
不要忘记使用@InboundChannelAdapter(autoStartup=“false”)
,正如Gary在其他SO问题中所建议那样。
我已经审阅了Microsoft提供的关于触发器的文档。[https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob-trigger?tabs=python][1] 事实上,在Azure函数中使用参数允许我们检索blob和一些属性(),我们还可以使用函数读取字节,但是我们如何将字节转换为
我已经创建了一个绑定适配器来显示毕加索的图片,但它不工作。我有以下错误: 发现数据绑定错误。****/数据绑定错误****Msg:在Android.Widget.ImageView上找不到参数类型为java.lang.String的属性'app:loadPicture'的设置器。文件:/home/groupevsc.com/mathieu_labar/documents/projects/andr
将 HTTP 参数转换成一个函数参数的过程是一个典型适配过程,执行这个过程的对象被称为适配器了。 Nutz.Mvc 提供了 org.nutz.mvc.HttpAdaptor 接口,隔离了这种行为。 在每一个入口函数上,你都可以通过注解 @AdaptBy 来声明如何适配 HTTP 参数。当然,你 没必要在每一个入口函数上都声明,在子模块类上声明,或者在整个应用的主模块上声明均可。 如何使用适配器?
在Casbin中,策略存储作为adapter(Casbin的中间件) 实现。 Casbin用户可以使用adapter从存储中加载策略规则 (aka LoadPolicy()) 或者将策略规则保存到其中 (aka SavePolicy())。 为了保持代码轻量级,我们没有把adapter代码放在主库中。 目前支持的适配器列表 Casbin的适配器完整列表如下。 我们欢迎任何第三方对adapter进行
适配器 In some cases you might not want to use socket.io. It's not a problem. Nest allows you to use any other websockets library, you only have to create an adapter. Let's imagine that you want to use w
本文向大家介绍Android RecyclerView适配器中的数据绑定,包括了Android RecyclerView适配器中的数据绑定的使用技巧和注意事项,需要的朋友参考一下 示例 也可以在RecyclerView适配器中使用数据绑定。 资料模型 XML布局 转接器类别