Tag: apache camel

如何在外部更新camel属性?

我正在开发非OSGI应用程序,我需要更新camel路由中使用的一些属性的值(加载BridgePropertyPlaceHolder)。 所以我认为: 要使用Cooltio管理控制台Hawtio,以便使用JMX更新camel 创建一个将更新属性的JMX MBean。 我成功创建了MBean操作并使用JMX调用它们,但我无法弄清楚如何更新依赖于这些属性的camel路由。 有没有办法在外部更新驼峰上下文? 更新:用例的例子:当远程服务器没有返回响应时,我们会一直发送消息,直到达到不成功尝试的最大值(没有确认消息)。 在camel中,我们根据从文件系统加载的属性创建路由器模式。 这个属性可以偶尔改变,我们希望在不重启服务器的情况下这样做,但问题是在启动上下文时骆驼解析路由,我找不到相应更新路由的意思。 我很感激任何有助于:)的建议

如何将消息发送到托管在IBM MQ集群中的不同队列管理器和主机名中的其他队列

我的基于Apache-camel的应用正在消耗来自IBM队列之一的消息,例如下面是连接工厂的详细信息 hostname=host1000 QManager=QM1000 Port=”some port” Channel=”common channel” Camel流程使用和处理并将响应发送到来自消息头的ReplyQueue。 from(wmq:queue:) .bean(“processBean”) .bean(“beanToSendMsgToReplyQueue”) 在驼峰标题中,我得到了JMSReplyQueue。 您可以看到它是一个不同的队列管理器,此队列管理器来自不同的主机,但在集群环境中。 JMSReplyTo = queue://QM1012/TEST.REPLY?targetClient=1 队列管理器也介于两者之间。 喜欢 queue:////? 以下是我在发送邮件时获得的例外情况。 ERROR o.apache.camel.processor.DefaultErrorHandler:215 – Failed delivery for (MessageId: ID-xxxxxxxxx-0-4 on ExchangeId: ID-xxxxxx-42443-1492594420697-0-1). Exhausted after delivery attempt: 1 caught: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: wmq://queue://QM1012/TEST.REPLY?targetClient=1 due to: Failed to resolve endpoint: wmq://queue://TAP2001R5/TEST?targetClient=1 due to: There are 1 […]

Apache Camel端点写AS400 FTP文件:

我试图通过camel端点将文件写入AS400 FTP,如下所示 ftp://user@host:21/QSYS.LIB/XINFT.LIB?password=password&passiveMode=true ftp://user@host:21/QSYS.LIB/XINFT.LIB?password=password 但写操作失败,出现以下exception Cannot change directory to: QSYS.LIB. Code: 550. Processed by failure processor: FatalFallbackErrorHandler[Pipeline[[Channel[Wrap[com.privasia.edi.core.routing.exception.CustErrorHandler@2003b7bd] -> com.privasia.edi.core.routing.exception.CustErrorHandler@2003b7bd], Channel[Log(ypn-cusres-containerData-outbound)[Error in YPN CUSRES Container Schedular call.]]]]] org.apache.camel.component.file.GenericFileOperationFailedException: File operation failed: 550-Specified library does not exist or cannot be accessed. 550 Current library not changed. Cannot change directory to: QSYS.LIB. Code: 550 at org.apache.camel.component.file.remote.FtpOperations.doChangeDirectory(FtpOperations.java:705)[218:org.apache.camel.camel-ftp:2.10.7] at org.apache.camel.component.file.remote.FtpOperations.changeCurrentDirectory(FtpOperations.java:683)[218:org.apache.camel.camel-ftp:2.10.7] […]

Camel 2.11批量聚合如何与单独的路由一起工作?

首先,有一个类似的未回答的问题将路由连接到单个聚合器 我们有一些消费者路线(ftp,file,smb)从远程系统读取文件。 使用直接路由进行简化测试,但与批量使用者的行为类似: from(“direct:”+routeId).id(routeId) .setProperty(AGGREGATION_PROPERTY, constant(routeId)) .log(String.format(“Sending (${body}) to %s”, “direct:start1”)) .to(“direct:aggregate”); 转换后,一次轮询的所有结果将在一个单独的路径中按批次聚合: from(“direct:aggregate”) .aggregate(property(AGGREGATION_PROPERTY), new BodyInAggregatingStrategy()) .completionFromBatchConsumer() .to(“log:result”, “mock:result”); 如果每个消费者分开运行,一切正常。 但如果多个消费者并行运行,聚合将拆分民意调查。 例如,如果文件消费者轮询500条消息,而第二条路线开始从ftp读取6个文件,那么我们得到2个聚合1,其中500条来自文件,1条来自ftp的6条消息。 测试用例: public void testAggregateByProperty() throws Exception { MockEndpoint result = getMockEndpoint(“mock:result”); result.expectedBodiesReceived(“A+A+A”, “B+B”, “A”, “Z”); template.sendBodyAndProperty(“direct:A”, “A”, Exchange.BATCH_SIZE, 3); template.sendBodyAndProperty(“direct:A”, “A”, Exchange.BATCH_SIZE, 3); template.sendBodyAndProperty(“direct:B”, “B”, Exchange.BATCH_SIZE, 2); template.sendBodyAndProperty(“direct:A”, “A”, Exchange.BATCH_SIZE, 3); template.sendBodyAndProperty(“direct:B”, […]

无法通过Camel将日期字段保存为mongo db中的ISO日期?

我有这样的pojo: @Document(collection = “data”) public class DataPoint { @Id private String id; private LocalDateTime createdDate; …. } 在一些代码库中我有以下代码: @Autowired private ProducerTemplate producerTemplate; … final List dataPoints =…. producerTemplate.sendBody(“mongodb:mongoBean?database=” + mongoDataConfiguration.getDatabase() + “&createCollection=true&operation=insert&collection=” + mongoDataConfiguration.getDataPointCollection(), dataPoints); 但是当我在数据库中打开集合时,我看到这样的日期字段: “createdDate” : { “month” : “NOVEMBER”, “year” : 2017, “dayOfMonth” : 7, “dayOfWeek” : “TUESDAY”, “dayOfYear” : 311, “monthValue” […]

Apache Camel:是否可以在不使用Spring的情况下配置WMQ?

目前我正在使用apache camel和wmq。 对于camel配置和路由,我使用的是Java DSL。 但我找不到任何关于如何使用Java DSL配置WMQ的示例。 这是我尝试配置WMQ时得到的结果: config.xml中 //id //vorname //nachname component.xml文件 但是,正如我之前所说,我不想使用Spring来配置它。 我更喜欢使用Java DSL。 可能吗? 如果是,你能给我一些例子或参考吗? 非常感谢您的帮助。 谢谢。

阿帕奇骆驼和jackson

我正在尝试apache-camel,我已经设置了一个基本路由,通过http4组件调用http服务,通过unmarshal()。json(JsonLibrary.Jackson)转换结果,然后打印出部分响应在bean组件中。 我遇到的问题是,当它到达json unmarhsaller时它会在运行时爆炸: 没有类型转换器可用于从类型:java.util.HashMap转换为所需类型:com.xxx.MyType 响应采用以下格式: {“data”:[{“x”:”y”},{“x”:”z”}]} 我的对象模型如下: @lombok.Data class Response { private List data; } @lombok.Data class Elem { private String x; } 因此,看起来unmarshaller认为响应是哈希映射,而我希望它解组为对象结构。 有没有办法让它做我想要的?

如何通过Apache Camel调用RESTful服务?

我目前正在使用HTTP方法来调用一些会产生JIRA问题的URL。 现在我想使用Apache Camel,我该如何使用它? 我需要通过Camel调用以下链接: http://localhost:8080/rest/api/2/project/” + key + /components 由于我是Camel的新手,请提供一些解决方案和示例。 谢谢

ActiveMQ Consumer挂起

我有一个使用SSL传输的activeMQ代理。 我有大约10个使用经纪人的消费者。 我正在使用camel配置我的路由。 即使我重新启动了消费者,即使队列中有待处理的消息,它也会经常挂起并且不会消耗新消息。 我开始试图通过一次尝试复制问题来逐步通过我的消费者来隔离发生这种情况的地方。 我终于找到了一个可以重新创建问题的消费者。 它会在一段时间后挂起,但是,如果我转到活动的MQ管理控制台并尝试查看队列中的消息,它将再次开始运行。 我认为Jetty导致连接发生刷新网页的队列,从而解除了我遇到的一些线程问题。 我该怎么调试呢? 谢谢

Apache Camel Http和SSL

我一直试图让一个双向的ssl / https代理与Camel一起工作。 我已经能够使用双向ssl设置Jetty组件,现在我正在尝试使用Http4组件来完成代理的客户端。 当我将docker流量路由到日志组件时,一切都很顺利,2路ssl信任链也没问题。 当我抛出Http4组件时,它会爆发一个未经过身份validation的对等exception。 我使用的是Camel 2.7.0 这是我到目前为止所拥有的 public static void main(String[] args) throws Exception { CamelContext context = new DefaultCamelContext(); JettyHttpComponent jetty = context.getComponent(“jetty”, JettyHttpComponent.class); SslSelectChannelConnector sslConnector = new SslSelectChannelConnector(); sslConnector.setPort(9443); sslConnector.setKeystore(“/home/brian/jboss.keystore”); sslConnector.setKeyPassword(“changeit”); sslConnector.setTruststore(“/home/brian/jboss.truststore”); sslConnector.setTrustPassword(“changeit”); sslConnector.setPassword(“changeit”); sslConnector.setNeedClientAuth(true); Map connectors = new HashMap(); connectors.put(9443, sslConnector); jetty.setSslSocketConnectors(connectors); final Endpoint jettyEndpoint = jetty.createEndpoint(“jetty:https://localhost:9443/service”); KeyStore keystore = […]