我有一个问题,我必须将消息广播到不同的输出位置。我正在使用JMSComponent来配置我的输出队列。我的输出队列配置有这样的:
ConnectionFactory factory = createOrGetConnectionFactory(brokerUrl);
JmsConfiguration jmsConfiguration = new JmsConfiguration();
jmsConfiguration.setPreserveMessageQos(true);
jmsConfiguration.setConnectionFactory(factory);
counter++;
outputLocations = new StringBuilder("hubOutput"+counter+":queue://queueName");
JmsEndpoint endpoint = new JmsEndpoint();
JmsComponent component = new JmsComponent();
component.setConcurrentConsumers(5);
component.setConfiguration(jmsConfiguration);
component.setConnectionFactory(factory);
//Add new JMS component in the context. This is done so that the output locations having same queue can be differentiated using the component name in camel registry. getContext().addComponent("hubOutput"+counter, component);
endpoint = (JmsEndpoint) component.createEndpoint(outputLocations.toString());
endpoint.setConfiguration(jmsConfiguration);
我有一个用于将消息广播到输出队列的驼峰路由。
from(fromLocation)
.setHeader("hubRoutesList",constant(hubUrl))
.log(urlToLog)
.setExchangePattern(ExchangePattern.InOnly)
.multicast()
.parallelProcessing()
.to(hubUrl.split(","));
所有输出队列都有不同的代理URL但队列名称相同。 代码正常工作但如果其中一个队列关闭,则该消息也不会广播到其他队列。
请帮助我。
谢谢, Richa
答案 0 :(得分:1)
您可以使用recipientList而不是.to(hubUrl.split(“,”));
使用选项stopOnException = false(即defaultValue),即使其中一个队列已关闭,也不会停止将消息转发到其他端点。 有关详细信息,请参阅http://camel.apache.org/recipient-list.html。