我正在尝试将camel与elasticsearch集成。在applicationContext中。xml添加了以下内容
<route id="timer-to-console">
<from uri="timer://foo?fixedRate=true&period=10s"/>
<transform>
<simple>Hello Web Application, how are you?</simple>
</transform>
<to uri="stream:out"/>
<to uri="elasticsearch://local"/>
</route>
然后当我跑的时候
mvn jetty:run
我得到以下信息
veryCounter=0, firedTime=Mon Apr 21 13:14:43 PDT 2014}
BodyType String
Body Hello Web Application, how are you?
]
Stacktrace
----------------------------------------------------------------------------------------
java.lang.IllegalArgumentException: operation is missing
at org.apache.camel.component.elasticsearch.ElasticsearchProducer.process(ElasticsearchProducer.java:54)
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
我的elasticsearch在本地运行,我使用ES 1.1.1。
我需要指定什么
elasticsearch://clusterName[?options]
谢谢,
您必须使用elasticsearch中指定的集群名称。yml,即如果它表示群集。名称:elasticsearch123然后您必须按如下方式进行路由:
来自(“文件:data\u json?noop=true
使用本地语言对我来说根本不起作用。不幸的是,它甚至没有抛出任何使调试变得困难的错误。
还要注意转换。convertBodyTo(byte[].class)
-这也是很重要的,否则Camel会将JSON文件转换为类属性(它会查找从泛型文件到映射的转换,并找到一个到属性的回退类型转换器)。当然,您也可以转换为组件支持的其他类型。
还值得一提的是,版本2.14.1
的camel-elasticsearch组件依赖于org.elasticsearch: elasticsearch: 1.0.0
,考虑到Elasticsearch的移动速度(当前版本是1.4.4
)以及它喜欢破坏兼容性的频率,这是一个相当旧的版本。也就是说,该组件似乎可以与Elasticsearch1.4.3
一起使用。
更新:GitHub上当前的主分支已将Elasticsearch升级到1.4.2版本:https://github.com/apache/camel/blob/2470023e25b8814279cbadb3ebc8002bed6d8fc8/parent/pom.xml#L144
参数/clusterNamelocal实际上意味着它将从Elasticsearch的JavaDoc(NodeBuilder.local(boolean)),查找在同一JVM中启动的Elasticsearch实例:
本地节点是使用本地(JVM级别)发现和传输的节点。将发现并与在同一JVM(实际上是类加载器)中启动的其他(本地)节点进行通信。JVM之外的节点将不会被发现。
快速浏览Apache Camel Elasticsearch组件页面,它们显示了以下示例:
elas公司ticsearch://local?operation=INDEX
这将索引(添加)到名为twitter的索引中,类型为tweet。您可以为indexName和indexType使用任何想要的值。
更新:再次查看Elasticsearch Camel Component留档...我认为为了使用local
作为elasticsearch连接中的服务器名称,您需要运行本地Elasticsearch实例,并且集群名称为local。默认情况下,Elasticsearch配置(elasticsearch.yml)设置为使用elasticsearch
的集群名称运行
我正在从事一个使用Apache Camel和Elasticsearch的项目,我想知道Camel支持哪个版本的Elasticsearch? 我的pom.xml是这样的: 但是当我想将文件路由到elasticsearch时,我遇到了以下错误: Java语言lang.IllegalStateException:收到来自不受支持版本的消息:[2.0.0]最小兼容版本为:[5.0.0] 我发现这个异常是由
我试图让Wildfly和ActiveMQ与Apache Camel一起工作,让我解释一下这个场景。每小时都会有一个camel批处理轮询一个FTP服务器,获取文件并将其发送到ActiveMQ代理。代理实现了两个路由:和。消息被排入,如果它们还没有准备好发送,则被路由到。中的消息由camel处理器出列和翻译,并在准备发送时排队到。中的准备发送消息被发送到Wildfly,MDB在那里执行某些操作。除了最
我是骆驼的新手,并且面临着需要设置的路线问题。如果有人可以引导我到正确的论坛,或者更好地纠正我面临的问题,那就太好了。这是我需要做的 - 公开一个 restlet endpoint来接受数据;使用此数据作为外部 SOAP Web 服务的输入,并以 JSON 格式将响应发送回调用方...这是我所做的...但是,当Camel尝试调用Web服务时,我收到以下错误...谁能指导我到这里?谢谢。 我使用的是
EdIndexBolt,EsPercolateBolt和Estate允许用户将storm中的数据直接传输到Elasticsearch。 详细说明请参考以下内容。 EsIndexBolt (org.apache.storm.elasticsearch.bolt.EsIndexBolt) EsIndexBolt将tuples直接流入Elasticsearch索。 Tuples以指定的索引和类型组合进行
我构建了Elasticsearch查询(DSL),如下所示。我想从Java应用程序中集成它。当我阅读时,高水平和低水平的Rest选项由Elastic提供。是否可以使用高级API构建复杂的查询?或者我将使用低级API,通过程序构建DSL?
我有一些用akka写的演员,我想通过ServiceMix让他们互动。很难,我对这些技术是如何交互的有点困惑。这是我目前所理解的: < li>akka让我写一些演员: < ul > < li >生产者发送消息 < li >消费者接收消息 < li >发送和接收的非类型化编辑器 每个参与者将在一个固定的endpoint上可用,在ServiceMix中定义为route 现在我的问题是: 谁自动在jett