对于一个新项目,我想使用部署到云基础架构(Google App Engine,Heroku,Amazon)的开源ESB(Mule,OpenESB,ServiceMix等).
有没有这方面的优秀资源,尤其是可扩展性,云实例之间的状态复制等问题?我对这个话题一无所知!
我知道Mule有自己的云产品(Mule iON) - 但我不认为这正是我想要的.
非常感谢,
肯
我有一个Mule应用程序,我发送一个请求到多个Web服务并聚合我得到的响应列表,想法是通过从处理列表的CustomJavaClass返回它来获得List的第一个响应:
return responses.get(0);
Run Code Online (Sandbox Code Playgroud)
如果我尝试通过浏览器访问它,我能够访问WSDL,返回的WSDL看起来像它应该看起来.但我尝试通过SoapUi发送消息,我得到以下异常:
Exception stack is:
1. Cannot copy message with a stream payload. Payload type is "org.apache.commons.httpclient.ContentLengthInputStream". Message payload is of type: ContentLengthInputStream (org.mule.api.MessagingException)
org.mule.routing.outbound.AbstractSequenceRouter:73 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MessagingException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
org.mule.api.MessagingException: Cannot copy message with a stream payload. Payload type is "org.apache.commons.httpclient.ContentLengthInputStream". Message payload is of type: ContentLengthInputStream
at org.mule.routing.outbound.AbstractSequenceRouter.route(AbstractSequenceRouter.java:73)
at org.mule.routing.outbound.AbstractOutboundRouter$1.doInTransaction(AbstractOutboundRouter.java:102)
at org.mule.routing.outbound.AbstractOutboundRouter$1.doInTransaction(AbstractOutboundRouter.java:99)
+ 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)
Run Code Online (Sandbox Code Playgroud)
SOAPUi异常:
Failed to route event via endpoint: org.mule.api.processor.MessageProcessors$LifecyleAwareMessageProcessorWrapper@ceb6dd. Message payload is of …Run Code Online (Sandbox Code Playgroud) 我们可以有把握地说,如果ESB提供了Orchestration功能,它是否有资格成为BPM的实现?
我知道BPM有不同的目的,即建模一些业务流程,这些业务流程的实现可以通过任何简单的Java/J2EE应用程序,复杂的SOA应用程序或某些应用程序来完成,即我提供BPM.是对的吗?
请考虑附图中所示的场景:

请指导一下.
在Petter回答后添加更多细节:

现在,最重要的部分 - 问题:
我想知道是否有任何绘图工具可用于根据EIP映射给定的用例解决方案.有一个可用于MS Visio的模板和一个用于OpenOffice的SVG替代方案.模板中的形状很好,但似乎不是演示文稿的最佳图形.有没有可用于绘制EIP的替代方案?提前致谢.
Apache Camel提供了几种执行数据转换的方法:Transform EIP的概念,自定义DataFormats,以及自定义类型转换器的容差.
我有一种情况需要从Camel路径内部进行非常复杂的转换.我应该实现自己的Type Converter,我自己的DataFormat,还是应该实现org.apache.camel.Expression并将所有转换内容放在那里:
public class MyTransformer implements Expression {
@Override
public <T> T evaluate(Exchange arg0, Class<T> arg1) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我想我很困惑在何时/什么时候使用你自己的Type Converter,何时使用.transform(myTransformer)处理器,或何时使用自定义DataFormat.提前致谢!
我想做一个流程:
我怎样才能提出第一点?
这不是一个问题,而是一个答案.我是wso2 ESB的新手,并希望在POC中实现拆分/收集EIP的测试运行.我按照我找到的示例,立即得到了一个返回单个响应的工作配置.然而,要获得所有回复,需要花费相当多的时间才能弄明白.大多数给定的样本似乎产生了相同的意外结果.我希望如果遇到同样的问题,这些行对你有帮助.
我使用soapUI示例服务(搜索操作)作为服务后端.我发送了一个组合消息,搜索两个项目到代理服务器(参见下面的artefact)迭代中介器拆分消息并将其转发到调用soapUI模型的端点.该总调解人等待所有响应,并试图把它变成一个结果消息.
虽然拆分器工作正常,但聚合器只返回一个结果元素而不是预期的元素列表.所有日志显示一切正常,几个请求被发送到相应的端点,但仍然只有最终响应返回的最终响应.
在将代理的日志级别设置为TRACE之后,我意识到聚合器工作得很好,只是它创建了一个不符合SOAP的消息.所有聚集的元素都直接添加到肥皂体下面.所以问题是如何在body和result标签之间添加一个根元素.我首先尝试了XSLT,但它也只能读取正文的第一个子元素.最后,我发现了一些深埋提示使用的充实调解员(或相当的一系列),并且没有的伎俩.以下列表说明了大多数示例中未找到的配置部分(如下所示).
<body>
<sam:multisearch xmlns:sam="http://www.example.org/sample/">
<sam:search>
<sessionid>123</sessionid>
<searchstring>Item 1</searchstring>
</sam:search>
<sam:search>
<sessionid>123</sessionid>
<searchstring>Item 2</searchstring>
</sam:search>
</sam:multisearch>
</body>
Run Code Online (Sandbox Code Playgroud)
<proxy xmlns="http://ws.apache.org/ns/synapse" name="test.multisearch" transports="https,http" statistics="enable" trace="enable" startOnLoad="true">
<target>
<inSequence>
<iterate xmlns:sam="http://www.example.org/sample/" expression="//sam:multisearch/sam:search">
<target>
<sequence>
<send>
<endpoint key="soapUI_Mockup"/>
</send>
</sequence>
</target>
</iterate>
</inSequence> …Run Code Online (Sandbox Code Playgroud) 我所研究的ESB和BPM工具都采用了一些输入,调用了多个步骤来完成任务.我所看到的不同之处在于,在ESB中,一切都是自动化的 - 过程是自动触发的,涉及大量外部调用/数据被转换并发送到适当的系统以供消费.在BPM系统的情况下,该过程可以手动或自动启动,它涉及一系列决策步骤,其中一些涉及手动决策步骤.一旦完成这些步骤,任务就被标记为完成.是否有可能解释BPM和ESB之间的明显区别?
我是WSO2 ESB的新手,我对消息处理器有以下问题.
我有这个消息处理器定义,每秒从队列中提取一个元素(以前存储的XML文档)并处理它调用名为transferProcessorSequence的序列.这是配置:
<?xml version="1.0" encoding="UTF-8"?>
<messageProcessor class="org.apache.synapse.message.processor.impl.sampler.SamplingProcessor" messageStore="transferFromMessageStore" name="transferFromMessageProcessor" xmlns="http://ws.apache.org/ns/synapse">
<parameter name="sequence">transferProcessorSequence</parameter>
<parameter name="interval">1000</parameter>
<parameter name="is.active">true</parameter>
<parameter name="concurrency">1</parameter>
</messageProcessor>
Run Code Online (Sandbox Code Playgroud)
它工作正常.我的问题是我不必每秒都做(它不应该是固定值)但必须使用我已存储到注册表中的值(最终我可以将此值存储在其他地方).
而不是这个设置:
<parameter name="interval">1000</parameter>
Run Code Online (Sandbox Code Playgroud)
我必须从注册表或类似的东西(也是属性)中检索存储的值.
我怎么能这样做?
**编辑1:我正在尝试遵循Jean-Michel提供的解决方案,但我发现在使用Maven构建我的项目时遇到了一些困难.
我创建了一个简单的Maven项目,这是我的pom.xml文件内容(此时我还没有实现Java类,我只是尝试编译一个空项目):
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.toolkit</groupId>
<artifactId>SamplingProcessorHeaderRateLimitation</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Sampling Processor Header Rate Limitation</name>
<description>Custom Sampling Mesageprocessor using response header to implement the rate limitation</description>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.4</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>com.sample.messageprocessor</Bundle-SymbolicName>
<Bundle-Name>com.sample.messageprocessor</Bundle-Name> …Run Code Online (Sandbox Code Playgroud) esb ×10
java ×3
mule ×3
soa ×3
apache-camel ×2
business-process-management ×2
wso2 ×2
aggregate ×1
cloud ×1
deployment ×1
eai ×1
jms ×1
mediator ×1
messaging ×1
mule-studio ×1
wso2esb ×1