RabbitMQ如何与Mule相比,我将使用面向消息的架构构建一个应用程序,而AMQP(RabbitMQ)提供了我想要的一切,但我对如此多的相关技术选择和ESB等类似概念感到困惑.如果我在不考虑其他选择的情况下做出选择,我有一个疑问.
我很清楚RabbitMQ是一个消息代理,它帮助我调解生产者和消费者之间的消息(所有形式或发布订阅,我可以理解它如何从真实的例子中使用,如twitter,或Facebook更新等)
什么是骡子,如果我能用骡子实现我在RabbitMQ中做的事情,我应该考虑类似于RabbitMQ的骡子吗?
mule的目标是否与消息代理的目标不同?
mule是否假设底层有一个消息代理将消息传递给适当的mule监听器(我可以在RabbitMQ中轻松编写监听器)
mule是一个完整的Java基础系统(我用RabbitMQ做的当前实验花了我不到30分钟编写一个简单的RPC客户端服务器,客户端作为C#和服务器作为Java,这样的事情很容易在Mule中完成).
消息总线[1]和消息代理[2]之间的区别是什么
正如我所看到的,唯一相关的区别是用来代表每一个的图片.
如果之间存在一些差异,请告诉我什么.
如果它们是相同的,请告诉我为什么两个概念引用相同的功能.
谢谢.
[1] http://www.eaipatterns.com/MessageBus.html
[2] http://www.eaipatterns.com/MessageBroker.html
我正在研究建筑模式,企业服务总线(ESB).阅读本文企业集成,几乎没有经验,我想知道BizTalk是否是ESB或者它只是一个EAI(集线器/轮辐或总线)?
我找到了这个NServiceBus和Biztalk,将BizTalk描述为一个中心消息代理.
考虑其他ESB框架(NServiceBus和Rhino Service Bus).这些框架没有处理消息的中心点.
Biztalk是EAI而不是ESB吗?
非常感谢
我将评估开源SOA解决方案.有什么选择?
我正在寻找提供(可能)完整SOA堆栈的东西.
我想要以下功能 -
现在Glassfish ESB看起来是个不错的选择.还有其他好的Stacks吗?
我发现与使用Java编码相比,在TIBCO中开发WS要快得多.
使用TIBCO作为您的WS服务提供商和服务请求者是明智的投资吗?
同时也是开发JMS消费者和发布者的先前问题.
我的服务器端Java代码如何使用/监听BW流程?到目前为止,我读到了有关TIBCO Adapters的功能,它具有许多功能,如监控,但这只是一个开销吗?在Java应用程序中编写WS&JMS代码是否更好?
您如何决定是否在Java或TIBCO中实现功能(例如发送邮件,记录等)?
非常感谢!Thirdy
在大多数文章中,我看到ESB和EAI之间的主要区别是"EAI中的单点故障".
我的问题是:
在EAI中,如果Hub失败,我们会说这是单点故障.在ESB中,如果总线发生故障,我们可以说单点故障.这是正确的吗?如果没有,请简要说明一下.
我正在使用Apache Camel 实现消息转换器模式,以使用来自RESTful端点的消息并将它们发送到AMQP端点.
封闭的应用程序基于Spring Boot,因此我使用Camel的" spring-boot "组件来集成这两个框架.正如这个spring-boot链接中的文档所示,我正在一个@Configuration注释类中实现我的Camel路由,该类扩展了RouteBuilder:
@Component
public class MyRestToAmqpRouter extends RouteBuilder {
@Override
public void configure() throws Exception {
from("jetty:http://my-restful-url")
.process(exchange -> {
// convert the message body from JSON to XML, take some
// incoming header values and put them in the outgoing
// body, etc...
}).to("rabbitmq://my-rabbitmq-url");
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题涉及如何进行单元测试这种翻译,而不需要实际的RESTful端点或配置的RabbitMQ代理?我已经阅读了许多在线示例,以及Camel in Action一书......看起来单元测试Camel路线的典型方法是将路径切入粘贴到单元测试中,并替换一个或更多端点URL带有" mock:whatever".
我想这八九不离十的作品...但它非常脆弱,当有人不更新单元测试后改变了真正的代码测试套件将无法识别.
我试图使用模拟来修改一些基于Spring的单元测试示例,如下所示:
@RunWith(CamelSpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {Application.class})
public class MyRestToAmqpRouterTest extends AbstractJUnit4SpringContextTests {
@Produce(uri …Run Code Online (Sandbox Code Playgroud) 假设我有一个大型中间件基础架构来调解多个业务组件(客户应用程序,网络,支付等)之间的请求.中间件堆栈负责编排,路由,转换和其他内容(类似于Gregor Hohpe的Enterprise Integration Patterns一书).
我的问题是:在中间件上放置一些业务逻辑是一种好的设计吗?
假设我的应用程序A从中间件请求一些客户数据.但是为了获得这些数据,我必须提供客户ID和其他一些参数.获取此参数应该由请求应用程序完成,还是负责"促进"并提供接收客户ID的接口并在内部获取其他参数的中间件?
我意识到这不是一个简单的问题(因为业务逻辑的定义),但我想知道它是一般方法还是一些指导方针.
我试图确定正确的XPath表达式,以返回元素的xsi:type属性值Body.我没有运气就尝试了所有的东西.根据我读到的内容,这似乎很接近,但显然不是正确的.任何快速指导,以便我终于可以休息了吗?
//v20:Body/@xsi:type
Run Code Online (Sandbox Code Playgroud)
我想要它回来 v20:SmsMessageV1RequestBody
<v20:MessageV1Request>
<v20:Header>
<v20:Source>
<v20:Name>SOURCE_APP</v20:Name>
<v20:ReferenceId>1326236916621</v20:ReferenceId>
<v20:Principal>2001</v20:Principal>
</v20:Source>
</v20:Header>
<v20:Body xsi:type="v20:SmsMessageV1RequestBody">
<v20:ToAddress>5555551212</v20:ToAddress>
<v20:FromAddress>11111</v20:FromAddress>
<v20:Message>TEST</v20:Message>
</v20:Body>
</v20:MessageV1Request>
Run Code Online (Sandbox Code Playgroud) 我们可以有把握地说,如果ESB提供了Orchestration功能,它是否有资格成为BPM的实现?
我知道BPM有不同的目的,即建模一些业务流程,这些业务流程的实现可以通过任何简单的Java/J2EE应用程序,复杂的SOA应用程序或某些应用程序来完成,即我提供BPM.是对的吗?
eai ×10
esb ×5
soa ×3
java ×2
jms ×2
apache-camel ×1
biztalk ×1
business-process-management ×1
integration ×1
messaging ×1
middleware ×1
mule ×1
open-source ×1
rabbitmq ×1
routing ×1
spring ×1
spring-boot ×1
terminology ×1
tibco ×1
xml ×1
xpath ×1
xsd ×1