问题标签 [eai]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2778 浏览

talend - 在 Talend Open Studio 中发送包含行数据的多封电子邮件

我正在使用软件talend进行企业应用程序架构项目 我有这个表:用户(Id_user,name_user,Email) 我想做的是从这个表中选择数据并使用 Tsendemail 组件向每个用户发送电子邮件
我到目前为止使用 TMssinput连接到数据库并使用Tsendemail发送一封电子邮件,
但我不知道如何选择 Row 的值并将它们用作Tsendemail

的“电子邮件” 有人可以帮我吗?谢谢你

0 投票
1 回答
498 浏览

nservicebus - Nservicebus 延迟消息发布

系统 A 创建一个新产品,我使用 NServiceBus 将新产品发送到系统 B。每当系统 A 中的现有产品有更新时,它也会立即发送到系统 B。

我有这个新场景:产品的生命周期由开始日期和结束日期决定。今天可以在系统 A 中创建一个新产品,其“开始日期”是在未来某个时间,比如 5 天后。系统 B 应该只被馈送有活性的产品。

因此,当创建具有未来开始日期的产品时,我希望系统 A 将消息推送到 NServiceBus,但让集成层延迟将消息发布到系统 B。

如何使用 NServiceBus 实现这一点。还是有不同的标准方法?

感谢期待。

0 投票
1 回答
363 浏览

java - 使用 Camel 的最合适架构

我们为公司应用程序定义了一个架构,因此该架构必须负责与其他应用程序/系统的集成。我们首先想到的是将所有集成集中在一个 ESB (Mule) 中,它将以独立模式运行。然而出现了新的需求,问题是每个应用程序都必须管理自己的集成(尚未定义,但它们不应该很复杂)。

现在我们正在评估使用 Apache Camel 或 Mule,但在嵌入式场景中。与一些伙伴讨论它,我们不太清楚哪种方法是建立这个架构的最佳(或更合适)的方式。在我看来,作为每个应用程序的责任,我会将 Camel 直接集成到我的应用程序中(作为库);但他们说在单独的项目中部署 Camel 是更好的选择。

这些是我所看到的场景:

  1. 我嵌入了 Camel 的应用程序。例如,如果我的应用程序必须调用 Web 服务,我只需对其进行编码并发送它(From(...).to(...) 等)

  2. 我的应用程序和另一个嵌入了 Camel 的应用程序。如果我的应用程序必须调用 Web 服务,并且我想通过 Camel 管理所有集成,我想我必须调用 camel 项目(通过 JMS,或调用它公开的接口),在该项目中定义一个路由,其中​​显示:当我从 X(即时调用的接口)读取时,调用此 WS。我的意思是,当我认为不需要它时,它会增加更多的复杂性。

可能我误解了骆驼的真正工作原理,所以我很高兴听到我错了什么;)

0 投票
1 回答
47 浏览

java - 企业应用程序集成:展示室与中央办公室的通信方式

我在一个客户中安装了一个 JAVA 应用程序,该客户在整个城市都有许多展厅,我需要实施一种可靠的方式来与中央办公室进行通信。
想法是将存储在 MySQL 数据库中的销售订单从这些陈列室发送到制造部门,以便应用程序可以处理它们。问题是互联网连接非常不可靠,有时几天都无法访问。由于任何陈列室都没有服务器(只有客户端电脑),并且中央办公室没有公共 IP,因此我们认为发送一封带有附加为 xml 的销售订单的电子邮件可能是一种可能的解决方案。这是一个好的解决方案还是我们应该改用 JMS?除了 JAVA Mail 和 JMS 之外,还有其他方法可以做到这一点吗?

0 投票
1 回答
591 浏览

architecture - 将 Boomi 连接到 CICS 主机的推荐方法是什么?

一位潜在客户要求我们建议一种集成策略,以在 CICS 主机上使用主机服务。

由于我们通常将此选择委托给与客户的 CICS 专家的专门会议,因此我们在这里有点失衡,需要建议。

根据经验,我通常会建议(CICS 与否):

  • 如果您不需要事务,则公开 WebServices
  • 如果您需要事务,请公开 MQ 端点

但是我真的没有具体的 CICS 知识来争论。我对以下方面的经验特别感兴趣:

  • 设置的复杂性
  • 表现
  • 使用 MQ 的分布式事务
  • 使用 Dell Boomi 的经验

有没有人有关于连接到 CICS 主机的 Boomi 最佳实践的建议或链接?

我的其他选择是:

  • 使用 CICS Transaction Gateway 构建本机连接器插件。然而,这需要在 Boomi 方面进行大量的努力和本地 Java 开发,而且我不确定这些优势。另外,这将适用于来自 Boomi=>CICS 的呼叫,但不允许监听 CICS=>Boomi 呼叫。
  • 调用 DB2 存储过程,该过程又调用 COBOL。我们已经用 AS400 做到了这一点,并且知道它在开销和性能方面存在限制,下面链接的文章也提出了进一步的限制。此解决方案也有允许 Boomi=>CICS 但不允许来自 CICS=>Boomi 的调用的限制

这里最相关的两个问题是:

但两者都没有与 Dell Boomi 的链接

0 投票
1 回答
889 浏览

c# - .NET AMQP Messaging Pattern Issues

I have created a small class using RabbitMQ that implements a publish/subscribe messaging pattern on a topic exchange. On top of this pub/sub I have the methods and properties:

  1. void Send(Message, Subject) - Publish message to destination topic for any subscribers to handle.

  2. MessageReceivedEvent - Subscribe to message received events on this messaging instance (messaging instance is bound to the desired subscribe topic when created).

  3. SendWaitReply(Message, Subject) - Send a message and block until a reply message is received with a correlation id matching the sent message id (or timeout). This is essentially a request/reply or RPC mechanism on top of the pub/sub pattern.

The messaging patterns I have chosen are somewhat set in stone due to the way the system is to be designed. I realize I could use reply-to queues to mitigate the potential issue with SendWaitReply, but that breaks some requirements.

Right now my issues are:

  • For the Listen event, the messages are processed synchronously through the event subscribers as the listener runs in a single thread. This causes some serious performance issues when handling large volumes of messages (i.e. in a back-end process consuming events from a web api). I am considering passing in a callback function as opposed to subscribing to an event and then dispatching the collection of callbacks in parallel using Task or Threadpool. Thread safety would obviously now be a concern of the caller. I am not sure if this is a correct approach.

  • For the SendWaitReply event, I have built what seems to be a hacky solution that takes all inbound messages from the message listener loop and places them in a ConcurrentDictionary if they contain a non-empty correlation guid. Then in the SendWaitReply method, I poll the ConcurrentDictionary for a message containing a key that matches the Id of the sent message (or timeout after a certain period). If there is a faster/better way to do this, I would really like to investigate it. Maybe a way to signal to all of the currently blocked SendWaitReply methods that a new message is available and they should all check their Ids instead of polling continuously?


Update 10/15/2014

After much exhaustive research, I have concluded that there is no "official" mechanism/helper/library to directly handle the particular use-case I have presented above for SendWaitReply in the scope of RabbitMQ or AMQP. I will stick with my current solution (and investigate more robust implementations) for the time being. There have been answers recommending I use the provided RPC functionality, but this unfortunately only works in the case that you want to use exclusive callback queues on a per-request basis. This breaks one of my major requirements of having all messages (request and reply) visible on the same topic exchange.

To further clarify, the typical message pair for a SendWaitReply request is in the format of:

  • Topic_Exchange.Service_A => some_command => Topic_Exchange.Service_B
  • Topic_Exchange.Service_B => some_command_reply => Topic_Exchange.Service_A

This affords me a powerful debugging and logging technique where I simply set up a listener on Topic_Exchange.# and can see all of the system traffic for tracing very deep 'call stacks' through various services.

TL; DR - Current Problem Below

Backing down from the architectural level - I still have an issue with the message listener loop. I have tried the EventingBasicConsumer and am still seeing a block. The way my class works is that the caller subscribes to the delegate provided by the instance of the class. The message loop fires the event on that delegate and those subscribers then handle the message. It seems as if I need a different way to pass the message event handlers into the instance such that they don't all sit behind one delegate which enforces synchronous processing.

0 投票
1 回答
90 浏览

edi - X12 使字段适合

我需要创建一个 X12 810 文档实现,以便从我的客户那里接收发票。我有一些我需要的字段,例如:发票抬头级别上存在的 ShipNumber、ShipmentNumbers 和 ProjectCode。发票明细级别上还存在诸如 ExpenseType 之类的字段。在我交给客户的文件中,说 BIG09 应该是船号并且可以是 10 个字符是正确的吗?或者 YNQ07 将是 ProjectCode 并且只能是值 x、y、z?

我只想知道如何在 X12 810 文档上表达我需要的数据?我很困惑,因为当我查看其他公司的 X12 810 实施时,我看不出我怎么能要求我需要什么

0 投票
1 回答
1166 浏览

.net - MSMQ中是否有类似JMS Topic的等效功能?

在 JMS 中,主题是一个核心概念。它是发布/订阅模式的表示。

  1. 发布者在频道上发布他的消息
  2. 订阅者订阅该频道并从该频道接收消息
  3. 当每个订阅者都收到消息时,频道会删除该消息

MSMQ/.NET 中是否有类似的功能?

注意:发布者不应该关心有多少订阅者或订阅者。

0 投票
1 回答
525 浏览

multithreading - 事务系统中的多线程消息代理 - 最佳实践

我们有 2 个基于交易流程交换票证的系统,如果一个状态没有到达一个系统,所有流程都被卡住,他们在票证状态中有一个订单。问题是我们在这个系统之间使用了一个多线程、负载平衡的消息代理,并且我们可能会遇到 update1 状态可以比 create 更快的情况,或者 update2 比 update1 更快的情况。

我正在寻找这种集成的最佳实践。

0 投票
1 回答
9795 浏览

java - 在 Apache Camel 应用程序中,单元测试如何注入模拟端点来代替真实端点?

我正在使用 Apache Camel 实现消息转换器模式,以使用来自 RESTful 端点的消息并将它们发送到 AMQP 端点。

封闭的应用程序基于 Spring Boot,因此我使用 Camel 的“ spring-boot ”组件来集成这两个框架。正如这个 spring-boot 链接中的文档所建议的那样,我在一个@Configuration-annotated 类中实现了我的 Camel 路由,该类扩展了RouteBuilder

我的问题涉及如何在不需要实际的 RESTful 端点或配置的 RabbitMQ 代理的情况下对该翻译进行单元测试?我已经阅读了许多在线示例,以及Camel in Action书……似乎对 Camel 路线进行单元测试的典型方法是将路线剪切粘贴到您的单元测试中,并替换一个或更多带有“”的端点 URL mock:whatever

我想这有点工作......但它非常脆弱,当有人稍后更改真实代码而不更新单元测试时,您的测试套件将无法识别。

我尝试使用模拟来调整一些基于 Spring 的单元测试示例,如下所示:

我希望 Camel 会从单元测试中获取这些端点 URL,将它们注册为模拟......然后在真实代码尝试使用这些 URL 时使用模拟而不是真实端点。

但是,我不确定这是可能的。当我在单元测试中使用真实的 URL 时,我得到了IllegalArgumentException's,因为您显然无法将“真实”端点 URL 注入MockEndpoint实例(只有以“ mock:”为前缀的 URL)。

当我mock:...在单元测试中使用“”端点 URL 时,它就没有用了,因为没有任何东西将它与被测类中的真实端点 URL 联系起来。因此,真正的端点 URL 永远不会被覆盖。当真正的代码被执行时,它只是像往常一样使用真正的端点(目标是能够在没有外部依赖于 RabbitMQ 的情况下进行测试)。

我在这里错过了一些真正基础的东西吗?似乎有一种方法可以让单元测试将假路由注入到这样的类中,这样被测代码甚至可以在没有意识到的情况下从真实端点切换到模拟端点。或者,我想我可以重构我的代码,以便将匿名Processor提升到一个独立的类......然后我可以独立于路由对它的翻译逻辑进行单元测试。但这似乎是一个不完整的测试。