标签: esb

将Java ESB部署到云中

对于一个新项目,我想使用部署到云基础架构(Google App Engine,Heroku,Amazon)的开源ESB(Mule,OpenESB,ServiceMix等).

有没有这方面的优秀资源,尤其是可扩展性,云实例之间的状态复制等问题?我对这个话题一无所知!

我知道Mule有自己的云产品(Mule iON) - 但我不认为这正是我想要的.

非常感谢,

java cloud deployment esb mule

6
推荐指数
1
解决办法
655
查看次数

Mule ESB:无法使用流有效负载复制邮件

我有一个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 mule

6
推荐指数
1
解决办法
1万
查看次数

BPM vs ESB - Orchestration?

我们可以有把握地说,如果ESB提供了Orchestration功能,它是否有资格成为BPM的实现?

我知道BPM有不同的目的,即建模一些业务流程,这些业务流程的实现可以通过任何简单的Java/J2EE应用程序,复杂的SOA应用程序或某些应用程序来完成,即我提供BPM.是对的吗?

soa esb business-process-management eai orchestration

6
推荐指数
2
解决办法
1万
查看次数

正好处理一次消息

请考虑附图中所示的场景:

多个应用的​​多个实例.

  1. 门户(生产者)将向总线发送一些消息,必须由多个应用程序(消费者)处理 - PAYROLLAPP,HELPDESK等.
  2. 可能正在运行多个消费者应用程序实例,也可以动态添加/删除这些实例
  3. 现在,确保每个应用程序只处理一次消息是至关重要的,即如果PAYROLLAPP -1处理消息,PAYROLLAPP -2不应该处理它; 当然,在上图中,HELPDESK - 1必须处理它.简而言之,在多个实例的情况下,只需要处理一次消息
  4. 当我搜索答案时,大部分内容都是关于创建一个"选择性消费者" - 一个基于某种逻辑接受/拒绝消息的消费者 - 请注意,对于所显示的应用程序,不能进行任何更改/添加/包装.图.逻辑必须驻留在管理总线的提供程序中的某个位置

请指导一下.

在Petter回答后添加更多细节:

我目前的理解和方法

  1. 左点划线左侧的项目是"接近" - 纯JMS,ESB,EAI
  2. 右点划线右侧的项目是"实施"

现在,最重要的部分 - 问题:

  1. 无论解决方案(纯JMS,ESB,EAI)如何,是否需要实现水平虚线(特定于应用程序的队列)下方的部分?
  2. 如何使用ESB(JBoss ESB等)而不是"纯粹的"JMS(Active MQ等)来帮助/阻碍?ESB是否提供优于JMS的任何优势,即"仅限Java"(?).我很困惑 - 'ESB或JMS',即使在引用这样的线程之后:JMS和ESB - 它们是如何相关的?.它有一个回复说"JMS不太适合REST服务,文件系统,S/FTP,电子邮件,Hessian,SOAP等的集成,这些都可以通过本机支持这些类型的ESB更好地处理.例如,如果您有一个进程在午夜转储500MB的CSV文件,并且您希望另一个系统拾取该文件,解析CSV并导入到数据库中,这可以通过ESB轻松完成 - 而只需要一个解决方案JMS会很糟糕.同样,REST服务的集成,以及对多个后端实例的负载平衡/故障转移,可以通过本机支持HTTP/S的ESB更好地完成." 这只会增加我的困惑!
  3. EAI框架(Apache Camel等)的使用方法是否与纯JMS或ESB方法完全不同?如果是,那么利弊如何?
  4. 有人告诉我ESB本身无济于事,需要使用BPM(或其他东西?)来定义和存储"路由"逻辑 - 这是真的吗?

messaging esb jms

6
推荐指数
1
解决办法
2435
查看次数

企业集成模式解决方案绘图工具

我想知道是否有任何绘图工具可用于根据EIP映射给定的用例解决方案.有一个可用于MS Visio的模板和一个用于OpenOffice的SVG替代方案.模板中的形状很好,但似乎不是演示文稿的最佳图形.有没有可用于绘制EIP的替代方案?提前致谢.

soa esb apache-camel enterprise-integration

6
推荐指数
2
解决办法
6030
查看次数

哪种Camel构造适合转换?

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.提前致谢!

java esb apache-camel

6
推荐指数
1
解决办法
7935
查看次数

Mule ESB - 两个文件作为输入(等待两者)

我想做一个流程:

  1. 等待两个文件:file_name.xdf和file_name.dff:如果两个文件(我想同时处理两个文件(等待两个文件),那些文件的文件名应该相同)
  2. 处理那些文件转换为字节数组
  3. 运行groovy脚本

我怎样才能提出第一点?

esb mule mule-studio

6
推荐指数
1
解决办法
1465
查看次数

wso2 ESB:分割/聚集模式 - 单一响应

不是一个问题,而是一个答案.我是wso2 ESB的新手,并希望在POC中实现拆分/收集EIP的测试运行.我按照我找到的示例,立即得到了一个返回单个响应的工作配置.然而,要获得所有回复,需要花费相当多的时间才能弄明白.大多数给定的样本似乎产生了相同的意外结果.我希望如果遇到同样的问题,这些行对你有帮助.

建立

我使用soapUI示例服务(搜索操作)作为服务后端.我发送了一个组合消息,搜索两个项目到代理服务器(参见下面的artefact)迭代中介器拆分消息并将其转发到调用soapUI模型的端点.该总调解人等待所有响应,并试图把它变成一个结果消息.

问题

虽然拆分器工作正常,但聚合器返回一个结果元素而不是预期的元素列表.所有日志显示一切正常,几个请求被发送到相应的端点,但仍然只有最终响应返回的最终响应.

在将代理的日志级别设置为TRACE之后,我意识到聚合器工作得很好,只是它创建了一个不符合SOAP的消息.所有聚集的元素直接添加到肥皂体下面.所以问题是如何在body和result标签之间添加一个根元素.我首先尝试了XSLT,但它也只能读取正文的第一个子元素.最后,我发现了一些深埋提示使用充实调解员(或相当的一系列),并且没有的伎俩.以下列表说明了大多数示例中未找到的配置部分(如下所示).

  1. 首先使用Enrich将所有相关项目捕获到属性中
  2. 忘记当前消息 - 用仅包含新有效负载根元素的主体重写完整的包络
  3. 将存储在属性中的元素附加到新的有效负载根目录.
  4. 如果需要,将soap标头捕获到属性中并将其附加到新的msg中(不在下面的配置中)

文物

演示请求

<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 aggregate wso2 mediator

6
推荐指数
1
解决办法
3304
查看次数

企业服务总线与BPM

我所研究的ESB和BPM工具都采用了一些输入,调用了多个步骤来完成任务.我所看到的不同之处在于,在ESB中,一切都是自动化的 - 过程是自动触发的,涉及大量外部调用/数据被转换并发送到适当的系统以供消费.在BPM系统的情况下,该过程可以手动或自动启动,它涉及一系列决策步骤,其中一些涉及手动决策步骤.一旦完成这些步骤,任务就被标记为完成.是否有可能解释BPM和ESB之间的明显区别?

soa esb business-process-management

6
推荐指数
1
解决办法
3111
查看次数

如何使用非固定值设置消息处理器间隔参数?(使用存储在property\registry\etc中的值)

我是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)

java esb wso2 wso2esb wso2-message-broker

6
推荐指数
1
解决办法
288
查看次数