Java Spring集成:使用JMX时自动连接队列失败
在添加JMX导出命名空间处理程序之前,我可以在测试类中使用Java Spring集成:使用JMX时自动连接队列失败,java,spring,jmx,spring-integration,spring-jmx,Java,Spring,Jmx,Spring Integration,Spring Jmx,在添加JMX导出命名空间处理程序之前,我可以在测试类中使用@Autowired和@Qualifier自动连接两个QueueChannel实例 我手头没有确切的配置(这是一个工作中的问题,现在困扰着我的工作时间!),但我正在使用以下元素: <int-jmx:mbean-export default-domain="com.business" server="mbeanServer" /> <context:mbean-export /> <context:mbean-
@Autowired
和@Qualifier
自动连接两个QueueChannel
实例
我手头没有确切的配置(这是一个工作中的问题,现在困扰着我的工作时间!),但我正在使用以下元素:
<int-jmx:mbean-export default-domain="com.business" server="mbeanServer" />
<context:mbean-export />
<context:mbean-server />
当我定义了这三件事后,自动布线过程失败,抛出了一个NoSuchBeanException
。但是,我可以看到有一些bean具有我队列的ID,因为我有一个后处理器,它在上下文中迭代所有bean
这是否与代理混淆
队列通道的声明类型有关,从而阻止按类型自动连接工作?您需要使用接口而不是具体类进行自动连接,因为JMX导出将通道包装在代理中。对于QueueChannel
使用PollableChannel
,对于DirectChannel
使用SubscribableChannel
正是出于这个原因,最好使用接口而不是具体类进行编码。您需要使用接口而不是具体类进行自动连线,因为JMX导出将通道包装在代理中。对于QueueChannel
使用PollableChannel
,对于DirectChannel
使用SubscribableChannel
正是出于这个原因,使用接口而不是具体类编写代码始终是一种好做法。什么是异常堆栈跟踪?什么是异常堆栈跟踪?嗨,Gary,谢谢你指出这一点。自动连线现在可以工作了,但我需要QueueChannel类的功能(在测试之间清除队列,根据大小断言)。我得到了类强制转换异常$Proxy13无法强制转换到
o.s.I.c.QueueChannel`-我如何利用实现的方法?在这里找到了最简单的解决方法:我没有更好的解决方法。为了通过代理使这些方法可用,我们必须创建另一个接口,比如QueueOperations,声明这些方法并让QueueChannel实现它。欢迎打开JIRA'改进的票,我们将考虑它的未来版本。谢谢-我只是在测试中自动排队队列,所以在此期间,我刚刚分离出JMX功能,只有在不测试时才能启用。很高兴知道,以防我在其他地方遇到。嗨,加里,谢谢你指出这一点。自动连线现在可以工作了,但我需要QueueChannel类的功能(在测试之间清除队列,根据大小断言)。我得到了类强制转换异常$Proxy13无法强制转换到
o.s.I.c.QueueChannel`-我如何利用实现的方法?在这里找到了最简单的解决方法:我没有更好的解决方法。为了通过代理使这些方法可用,我们必须创建另一个接口,比如QueueOperations,声明这些方法并让QueueChannel实现它。欢迎打开JIRA'改进的票,我们将考虑它的未来版本。谢谢-我只是在测试中自动排队队列,所以在此期间,我刚刚分离出JMX功能,只有在不测试时才能启用。很高兴知道,以防我在其他地方遇到这种情况。