嘿,
如果我们有Apache Camel为什么要使用Apache ServiceMix和Mule等其他解决方案?
Apache Camel与这些产品相比无法做到吗?
何时使用Mule/ServiceMix以及何时使用Camel?
RabbitMQ如何与Mule相比,我将使用面向消息的架构构建一个应用程序,而AMQP(RabbitMQ)提供了我想要的一切,但我对如此多的相关技术选择和ESB等类似概念感到困惑.如果我在不考虑其他选择的情况下做出选择,我有一个疑问.
我很清楚RabbitMQ是一个消息代理,它帮助我调解生产者和消费者之间的消息(所有形式或发布订阅,我可以理解它如何从真实的例子中使用,如twitter,或Facebook更新等)
什么是骡子,如果我能用骡子实现我在RabbitMQ中做的事情,我应该考虑类似于RabbitMQ的骡子吗?
mule的目标是否与消息代理的目标不同?
mule是否假设底层有一个消息代理将消息传递给适当的mule监听器(我可以在RabbitMQ中轻松编写监听器)
mule是一个完整的Java基础系统(我用RabbitMQ做的当前实验花了我不到30分钟编写一个简单的RPC客户端服务器,客户端作为C#和服务器作为Java,这样的事情很容易在Mule中完成).
我正在考虑将ESB集成到现有的基于Java/Maven Web的产品中.具体来说,我正在寻找ServiceMix和Mule.该产品将连接到多种不同的服务,包括电子邮件,Quartz,基于HTTP的RESTful Web服务,SMS和IM.我只是快速浏览了一下文档,这两个选项似乎相当重要且相当复杂.这似乎是何时使用ESB的教科书示例,但我不想花费大量时间来学习一个或另一个系统.
就像我说的,我已经有了一个由Maven构建的Web应用程序,并希望集成其中一个系统相当简单,即使只是为了发送电子邮件这么简单的事情,但看起来添加任何一个都将拉入世界的一半罐子的条款,很难嵌入现有的产品.
是否值得尝试引入其中一个选项?是否有一种简单的方法可以将它们集成到现有应用程序中而无需完全重组?还有其他更轻的重量选择吗?是否有一些方面我应该考虑使它们的使用值得?
我在这一行上有一个输入XML:
<Holding id="12">
<Policy>
<HoldingForm tc="1">Individual</HoldingForm>
<PolNumber>848433</PolNumber>
<LineOfBusiness tc="1">Life</LineOfBusiness>
<CarrierCode>67644</CarrierCode>
</Policy>
</Holding>
Run Code Online (Sandbox Code Playgroud)
我对此XML的操作取决于if <PolNumber>
(它是模式中的可选元素)是否具有值.我正在使用Mule 3.3 xpath
求值程序执行此操作,我的XPath表达式看起来像这样:
<expression-filter expression="#[xpath('//acord:Holding/acord:Policy/acord:PolNumber').text != empty]"/>
Run Code Online (Sandbox Code Playgroud)
只要<PolNumber>
元素存在或者<PolNumber/>
是空元素,这就可以正常工作.但如果<PolNumber>
不存在,则上面的表达式抛出异常.
我试着用XPath的布尔函数,但返回true
的<PolNumber/>
.有没有更好的方法来检查元素是否存在且非空?
编辑:
这是我的mule配置中命名空间管理器的配置
<xm:namespace-manager includeConfigNamespaces="true">
<xm:namespace prefix="acord" uri="http://ACORD.org/Standards/Life/2" />
<xm:namespace prefix="soap" uri="http://schemas.xmlsoap.org/soap/encoding/" />
</xm:namespace-manager>
Run Code Online (Sandbox Code Playgroud) 是否有一种简单的方法可以将Flow配置为从类路径中读取单个文件一次?我不需要轮询文件.我只需要读取一个已知文件并将其内容设置为消息有效负载.
我是Mule Studio的新手.
我正面临一个问题.我有一个要求,我需要使用Mule Studio将数据从CSV文件插入PostgreSQL数据库.
我使用的是Mule Studio CE(版本:1.3.1).我查看了谷歌,发现我们可以使用Data-mapper这样做.但它只适用于EE.所以我不能使用它.
此外,我正在检查网络并找到一篇文章使用Mule Studio从PostgreSQL(入站)读取数据并将其写入文件(出站) - 逐步方法.
这似乎是可行的,但我的要求恰好与给出的文章相反.我需要File作为入站数据,而Databse作为Outbound组件.
这样做的方法是什么?
任何一步一步的帮助(如使用的组件)和指导将非常感激.
我正在使用Groovy
脚本Mule ESB
从Oracle
存储过程(包括游标)获取输出参数并获得异常.
最小的例子:
import groovy.sql.Sql
import oracle.jdbc.pool.OracleDataSource
import oracle.jdbc.driver.OracleTypes
def ds = new OracleDataSource()
// setting data source parameters here
def sql = new Sql(ds)
def data = []
sql.call("""declare
result_table sys_refcursor;
begin
open result_table for select 1 as a from dual;
insert into CURSOR_TEST (ID) values (1);
commit;
${Sql.resultSet OracleTypes.CURSOR} := result_table;
insert into CURSOR_TEST (ID) values (2);
commit;
end;
"""
){ table ->
throw new RuntimeException("Never getting this exception.")
table.eachRow {
data …
Run Code Online (Sandbox Code Playgroud) 您在何时,何地以及为何在PHP项目中使用ESB?
在哪里,何时以及为什么认为在PHP项目中使用ESB是有意义的?
ESB(以及像Mule这样的ESB辅导员)是否提供PHP和本机LAMP技术所缺乏的任何功能?
编辑
我对这个问题的动机源于我的假设,你实际上从未真正需要骡子.骡子将促进与外部服务的沟通,您可以在没有骡子的情况下处理.在一天结束时,Mule也会产生成本和开销.所以我的问题是指导有人告诉我你真正受益于ESB和Mule这样的工具的场景,或者凭借扎实的知识来猜测.
编辑2
关于Houcem回复我对他的帖子的评论...什么是ESB/Mule的原生LAMP答案?
编辑3
看起来像Tuxedo可能是Mule/ESB的PHP本地替代品.有人有使用这个工具的经验吗?
我有一个关于Mule的上下文属性占位符的问题,我有两个文件设置如下:
<context:property-placeholder location="classpath:mule-app-1.properties, file:///etc/mule/conf/mule-app-2.properties" />
Run Code Online (Sandbox Code Playgroud)
首先这是一个有效的配置,其次哪个文件优先于另一个?app1或app2文件?
-S
与任何编程语言一样,编写Mule
流程时要遵循的标准命名约定是什么?我发现在Mule in Action book中遵循了驼峰式约定.Mule命名约定的标准格式是什么.
可以建议标准选项吗?