好的我在哪里工作,我们在过去的几十年中编写了相当多的系统.
系统多种多样,多个操作系统(Linux,Solaris,Windows),多个数据库(oracle,sybase和mysql的几个版本),甚至多种语言(C,C++,JSP,PHP和许多其他语言)都是用过的.
每个系统都是相当自治的,即使以将相同数据输入多个系统为代价.
管理层最近决定,我们应该调查让所有系统愉快地互相交流和共享数据所需的内容.
请记住,虽然我们可以对任何单个系统进行软件更改,但任何一个系统(或更多)的完全重写都不是管理层可能会接受的.
这里几个开发人员的第一个想法是直截了当:如果系统A需要来自系统B的数据,它应该只连接到系统B的数据库并获得它.同样,如果需要提供B数据,则应将其插入B的数据库中.
由于使用的数据库(和版本)混乱,其他开发人员认为我们应该有一个新的数据库,结合所有其他系统的表,以避免不得不兼顾多个连接.通过这样做,他们希望我们能够整合一些表并摆脱冗余数据输入.
这是关于我对整个烂摊子的看法.
使用数据库作为系统通信手段的整个想法对我来说很有趣.业务逻辑必须放在多个系统中(如果系统A想要向系统B添加数据,它在插入之前更好地理解B关于数据的规则),几个系统很可能必须进行某种形式的数据库轮询才能找到对数据的任何更改,持续维护将是一件令人头疼的事情,因为对数据库模式的任何更改现在都会传播到多个系统.
我的第一个想法是花时间为不同的系统编写API /服务,一旦编写就可以很容易地来回传递/检索数据.许多其他开发人员认为这比使用数据库过多而且工作量大得多.
那么让这些系统相互通信的最佳方法是什么?
我对基于Java的技术知之甚少,出于业务实施的原因,我可能需要确定WebLogic Integration(WLI)或Oracle Service Bus(OSB)是否是将少量独立系统集成在一起的更好选择.这两种产品似乎都能够执行类似的任务,但在一种情况下(WLI),集成在技术上更受驱动,而另一种(OSB)则更多地由业务流程驱动.
假设成本是没有选择的,任何人都可以提供一个很好的描述,何时会选择使用一种产品而不是另一种?一种选择是否涉及更多自定义Java编码与配置?
我很好奇不同的人如何解决系统的整合.我有一种感觉,在过去的几年里,越来越多的工作已经用于集成系统,并且这种工作需求也会增加.
我想知道你是否解决了它开发你自己的小服务然后连接或如果你使用某种产品(WebSphere,BizTalk,Mule等).我也认为知道如何管理和维护这些解决方案(如何解决安全性,仪表等等),解决方案遇到了什么样的问题等等,这一点很有意思.
我们有一些项目涉及构建一个由50%自定义功能组成的应用程序,但是然后引入一个wiki,一个论坛和其他已经发明的"轮子"的组件,我们不会希望从头开始重写.
这些第三方应用程序通常具有自己的数据库,主题和身份验证系统.根据我的经验,让事情像单点登录或共同主题一样工作,或者在多个子应用程序中跨实体进行标记/搜索是非常具有挑战性的问题.这种集成项目有哪些最佳实践?
我们的方法,到目前为止,已经尝试仔细挑选你的组件,选择有明确定义的API,最好是通过HTTP(如REST或SOAP)的,虽然这并不总是可行的(我们还没有找到一个体面这样工作的论坛).人们可以给那些试图做到这一点的人提供建议,因为我怀疑这些天我们中的许多人越来越频繁了吗?
您好,我是 RabbitMQ 的新手,我正在尝试在 2 个应用程序之间发送一个对象,但它不起作用然后我发现我需要序列化和反序列化这些对象,但它仍然无法正常工作。当我发送一个字符串时没有问题,但是对于对象它突然不起作用,应用程序之间没有连接,我不确定我做错了什么。
这是 Sender.java :
import org.apache.commons.lang3.SerializationUtils;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
public class App {
private final static String QUEUE_NAME = "12345";
public static void main(String[] argv) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("somehost");
factory.setUsername("guest");
// factory.setPassword( "password" );
//factory.setPort( 12345 );
Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
Car car = new Car(4, 4, "Mercedes");
byte[] data = SerializationUtils.serialize(car);
channel.basicPublish("", …Run Code Online (Sandbox Code Playgroud)