我想在bean中注入一个QueueChannel,以便我可以监视它的RemainingCapacity。如果有人可以指导我解决这个问题,那就太好了。
以下是我的配置:
<si:channel id="queueChannel">
<si:queue capacity="200"/>
</si:channel>
<bean id="inboundAdapterPollingConfiguration" class="com.foo.impl.InboundAdapterPollingConfigurationImpl">
<property name="channel" ref="queueChannel"/>
<property name="jdbcInboundAdapter" ref="jdbcInboundAdapter"/>
</bean>
Bean代码:
public class InboundAdapterPollingConfigurationImpl implements MethodInterceptor{
QueueChannel channel;
public QueueChannel getChannel() {
return channel;
}
public void setChannel(QueueChannel channel) {
this.channel = channel;
}
}
错误:
java.lang.IllegalStateException: Cannot convert value of type
[$Proxy336 implementing org.springframework.integration.core.PollableChannel,
org.springframework.integration.MessageChannel] to required type
[org.springframework.integration.channel.QueueChannel]
for property 'channel': no matching editors or conversion strategy found
答案 0 :(得分:1)
启用JMX时,通道,端点等会被包含在代理中;这意味着您只能使用界面(例如MessageChannel
)注入它们。我们正在考虑将来使这更容易一些的选项,但是,现在,您必须解包代理才能访问基础QueueChannel
对象。 Here is a Gist showing how to do it
答案 1 :(得分:0)
约翰,在我们的聊天中你说:
我正在使用JMX Export获取有关我的应用程序中的TaskExecutors的信息并动态修改它
因此,没有必要为您的案例与代理作斗争,因为<int-jmx:mbean-export>
具有属性managed-components
(),您可以只列出执行者的bean nemas。
您的queueChannel
将不是代理。