【问题标题】:Creating durable subscriber using Polling Consumer in camel在骆驼中使用轮询消费者创建持久订阅者
【发布时间】:2014-04-21 16:40:45
【问题描述】:

我正在尝试使用轮询消费者创建一个持久订阅者。 URI 是正确的,因为在骆驼路线中使用相同的 uri 并且正确创建了持久订阅者时正在工作。 由于某种原因,PollingConsumer 无法创建持久订阅者,而是创建普通订阅者。

难道不能使用轮询消费者来创建持久订阅者吗?

public class OutQWaitingProcesser implements Processor {

    @Override
    public void process(Exchange exchange) throws Exception {
        Endpoint endpoint = exchange.getContext().getEndpoint("jms:topic:response?clientId=5&durableSubscriptionName=abcd");
        PollingConsumer consumer = endpoint.createPollingConsumer();
        consumer.start();
        Exchange exchange2 = consumer.receive();
        String body = exchange2.getIn().getBody(String.class);
        exchange.getIn().setBody(body);
        consumer.stop();
    }
}

【问题讨论】:

    标签: apache-camel activemq


    【解决方案1】:

    Camel JmsPollingConsumer 基于 Spring JMSTemplate,不支持设置durableSubscription 选项。

    【讨论】:

    • 没错。谢谢你告诉我这个。有没有其他方法可以在使用骆驼的java代码中做到这一点。我想在将响应发送回 Web 服务之前等待骆驼路由队列中的消息,我不想创建一个以队列作为生产者端点的新路由。
    • 可以在处理器或beancamel.apache.org/bean方法中做一些接收工作。但恐怕您需要使用 JMS API 自己创建一个持久订阅消费者并在那里接收消息。顺便说一句,如果您有很多用户想要访问该服务,那么阻止该 Web 服务的线程不是一个好习惯。
    • 谢谢Willem,你是对的,这个只适用于很少使用的少数情况。通常我们的网络服务是异步的。
    猜你喜欢
    • 1970-01-01
    • 2017-02-20
    • 2013-06-03
    • 2017-01-24
    • 1970-01-01
    • 2015-08-27
    • 2013-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多