当前位置: 首页 > 知识库问答 >
问题:

无法在Camelendpoint中设置ActiveMQ目标选项

殳俊晤
2023-03-14

我正在尝试在驼峰JMS(ActiveMQ)使用者上设置预回迁策略。根据Camel文件http://camel.apache.org/activemq.html#ActiveMQ-使用ActiveMQDestinationOptions,我应该能够通过添加来实现这一点?目的地消费者到endpointURL的预取大小=1。

不幸的是,当我这样做时,我得到以下异常

Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: activemq://queue:ToSynchronize?destination.consumer.prefetchSize=1 due to: There are 1 parameters that couldn't be set on the endpoint. Check the uri if the parameters are spelt correctly and that they are properties of the endpoint. Unknown parameters=[{destination.consumer.prefetchSize=1}]
    at org.apache.camel.impl.DefaultComponent.validateParameters(DefaultComponent.java:183)
    at org.apache.camel.impl.DefaultComponent.createEndpoint(DefaultComponent.java:128)
    at org.apache.camel.impl.DefaultCamelContext.getEndpoint(DefaultCamelContext.java:558)
    ... 48 more

我有一个简单的路线构建器

@Component
public class IntegrationRout extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("activemq:queue:ToSynchronize?destination.consumer.prefetchSize=1")
            .unmarshal().jaxb("com.foo.jms.model")
            .beanRef("Service", "upload")
    }
}

以及Java中的Spring配置(摘自一些关于如何配置JMS事务客户端的教程)

@Configuration
@EnableTransactionManagement
@ComponentScan(basePackages = {"com.foo"})
public class SynchronizationConfiguration extends CamelConfiguration {

    @Bean
    public ConnectionFactory jmsConnectionFactory() {
        return new ActiveMQConnectionFactory("tcp://localhost:61616");
    }

    @Bean
    @Autowired
    public PlatformTransactionManager jmsTransactionManager(final ConnectionFactory jmsConnectionFactory) {
        return new JmsTransactionManager(jmsConnectionFactory);
    }

    @Bean
    @Autowired
    public JmsComponent activemq(final ConnectionFactory jmsConnectionFactory, final PlatformTransactionManager jmsTransactionManager) {
        return JmsComponent.jmsComponentTransacted(jmsConnectionFactory, jmsTransactionManager);
    }
}

共有1个答案

堵睿范
2023-03-14
匿名用户

如果配置ActiveMQ目标选项,如<代码>?目的地消费者prefetchSize=1必须显式使用ActiveMQComponent类。使用常规JmsComponent将不起作用。

所以你必须更换

    @Bean
    @Autowired
    public JmsComponent activemq(final ConnectionFactory jmsConnectionFactory, final PlatformTransactionManager jmsTransactionManager) {
        return JmsComponent.jmsComponentTransacted(jmsConnectionFactory, jmsTransactionManager);
    }

用类似的东西

    @Bean
    @Autowired
    public JmsComponent activemq(final ConnectionFactory jmsConnectionFactory, final PlatformTransactionManager jmsTransactionManager) {
        final ActiveMQComponent activemq = new ActiveMQComponent();
        activemq.setConnectionFactory(jmsConnectionFactory);
        activemq.setTransactionManager(jmsTransactionManager);
        activemq.setTransacted(true);
        return activemq;
    }

 类似资料:
  • 我应该如何解决这个问题?

  • 我正在使用新的android。支持设计小装置。来自支持库的BottomNavigationView。如何从代码中设置当前选择?我意识到,在旋转屏幕后,选择被更改回第一项。当然,如果有人能告诉我如何在“暂停”功能中“保存”底部导航视图的当前状态,以及如何在“恢复”功能中恢复它,这也会有所帮助。 谢谢

  • 我面临一些问题。当我打开eclipse时,它会显示一条消息 此Android SDK需要Android开发者工具包版本22.0.0或更高版本当前版本为16.0。XXXXXXXXXXXXX请更新至最新ADT版本 我尝试在eclipse中打开sdk管理器,它显示 首选项中未设置Android SDK的位置 以前,我设置一切,我在eclipse运行应用程序。不知道突然发生了什么。 我检查了首选项,有sd

  • 我正在尝试在Linux系统上使用IntelliJ Community 2021.2为我的Gradle项目(包含许多主要方法)设置JVM参数。在用户目录中创建idea64.vmoptions对我不起作用,因为主要方法不是从文件中获取VM设置。我还尝试设置一个环境变量来指示. vm选项文件,但它仍然不起作用。 唯一对我有用的是运行/调试配置中的“添加VM选项”,但我不想每次创建新的主方法时都设置VM选

  • 如何在nodejs中发送文件,我正在创建一个页面应用程序,所以我只想abcd.html页面首次按要求交付,这是我的代码 app.js 对页面的响应 发送后,它总是给出无法设置的标题,下面是控制台输出 错误:SendStream禁止。SendStream出错(/home/pitu/CODING/NODE-PROJECTS/chichat/NODE\u modules/express/NODE\u m

  • 本文向大家介绍select标签设置默认选中的选项方法,包括了select标签设置默认选中的选项方法的使用技巧和注意事项,需要的朋友参考一下 方法有两种。 第一种 通过<select>的属性来设置选中项,此方法可以在动态语言如php在后台根据需要控制输出结果。 第二种 为通过前端js来控制选中的项: 获取<select>标签选中项文本的js代码为: 一些其它操作<select>标签的技巧如下: 1)