我需要调用一个在特定窗口中收集数据的存储过程。例如,我发送一个代表现在的时间戳,一个15分钟的窗口,它将在最后15分钟内返回所有数据。每次调用此过程时,我都需要更新现在表示的时间戳,以便我避免使用旧数据。
无论如何要实现这个目标吗?
我尝试使用"现在"下面的bean是失败的,因为即使该bean是原型,它的值只在创建通道适配器时被检索过一次。
我目前配置的匿名存储过程 - 入站 - 通道 - 适配器如下:
<int-jdbc:stored-proc-inbound-channel-adapter
channel="storedProcOutboundChannel" stored-procedure-name="dataWindowRetrieval"
data-source="dataSource" auto-startup="true" id=""
ignore-column-meta-data="false" is-function="false"
skip-undeclared-results="true" return-value-required="false">
<int:poller fixed-rate="60" time-unit="SECONDS"></int:poller>
<int-jdbc:parameter name="CurrentDateTime" type="java.sql.Timestamp" value="#{now}" />
<int-jdbc:parameter name="MinuteOffset" type="java.lang.Integer" value="3" />
<int-jdbc:parameter name="SomeOtherParameter" type="java.lang.Integer" value="4" />
<int-jdbc:parameter name="YetAnotherParameter" type="java.lang.Integer" value="15" />
<int-jdbc:returning-resultset name="theResults" row-mapper="org.springframework.jdbc.core.ColumnMapRowMapper" />
</int-jdbc:stored-proc-inbound-channel-adapter>
<bean id="now" scope="prototype" class="java.sql.Timestamp">
<constructor-arg value="#{ T(java.lang.System).currentTimeMillis()}" />
</bean>
答案 0 :(得分:1)
而不是value
使用expression="@now"
。
该值仅在初始化时评估。