البوابات في InterSystems IRIS هي آلية الاتصال بين نواة InterSystems IRIS وكود تطبيق Java / .Net. بمساعدة gateways ، يمكنك العمل مع كائنات Java / .NET من كائنات ObjectScript و ObjectScript و globals من Java / .NET. يمكن تشغيل البوابات في أي مكان - محليًا ، على خادم بعيد ، في عامل إرساء.
في هذه المقالة ، سأوضح لك كيف يمكنك بسهولة تطوير منتجات التكامل ووضعها في حاويات باستخدام كود .Net / Java. وللتفاعل مع التعليمات البرمجية بلغات Java / .Net ، سنستخدم PEX ، والتي توفر فرصة لتنفيذ أي عنصر من عناصر التكامل في لغات Java /.
على سبيل المثال ، سنطور تكاملًا مع Apache Kafka .
هندسة معمارية
أباتشي كافكا هو وسيط رسائل مشهور. في كافكا يوجد موضوع (موضوع) رسائل يكتب فيها الناشرون (الناشر) رسائل ويكون لديهم مشتركون (مستهلكون) على المواضيع التي تقرأ هذه الرسائل.
أولاً ، سنكتب عملية Java التجارية التي سترسل رسائل إلى Apache Kafka. ثم نضيف خدمة أعمال في C # من شأنها قراءة وحفظ ونقل الرسائل لمزيد من المعالجة في InterSystems IRIS.
سيعمل حلنا في عامل الإرساء ويبدو كالتالي:
بوابة جافا
بادئ ذي بدء ، سنقوم بتطوير عملية تجارية في Java لإرسال رسائل إلى Apache Kafka. يمكن كتابة الكود في أي Java IDE ويبدو كالتالي :
PEX -
com.intersystems.enslib.pex.BusinessOperation.— -
OnInitApache Kafka InterSystems IRISOnTearDownApache Kafka ( ).OnMessagedc.KafkaRequest Apache Kafka.
- Docker .
-:
FROM openjdk:8 AS builder
ARG APP_HOME=/tmp/app
COPY src $APP_HOME/src
COPY --from=intersystemscommunity/jgw:latest /jgw/*.jar $APP_HOME/jgw/
WORKDIR $APP_HOME/jar/
ADD https://repo1.maven.org/maven2/org/apache/kafka/kafka-clients/2.5.0/kafka-clients-2.5.0.jar .
ADD https://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar .
ADD https://repo1.maven.org/maven2/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar .
ADD https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar .
WORKDIR $APP_HOME/src
RUN javac -classpath $APP_HOME/jar/*:$APP_HOME/jgw/* dc/rmq/KafkaOperation.java && \
jar -cvf $APP_HOME/jar/KafkaOperation.jar dc/rmq/KafkaOperation.class
FROM intersystemscommunity/jgw:latest
COPY --from=builder /tmp/app/jar/*.jar $GWDIR/FROM openjdk:8 AS builderJDK8 , .
ARG APP_HOME=/tmp/app
COPY src $APP_HOME/src /src /tmp/app.
COPY --from=intersystemscommunity/jgw:latest /jgw/*.jar $APP_HOME/jgw/ Java Gateway /tmp/app/jgw.
WORKDIR $APP_HOME/jar/
ADD https://repo1.maven.org/maven2/org/apache/kafka/kafka-clients/2.5.0/kafka-clients-2.5.0.jar .
ADD https://repo1.maven.org/maven2/ch/qos/logback/logback-classic/1.2.3/logback-classic-1.2.3.jar .
ADD https://repo1.maven.org/maven2/ch/qos/logback/logback-core/1.2.3/logback-core-1.2.3.jar .
ADD https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.30/slf4j-api-1.7.30.jar .
WORKDIR $APP_HOME/src
RUN javac -classpath $APP_HOME/jar/*:$APP_HOME/jgw/* dc/rmq/KafkaOperation.java && \
jar -cvf $APP_HOME/jar/KafkaOperation.jar dc/rmq/KafkaOperation.class - javac/jar jar . maven gradle.
FROM intersystemscommunity/jgw:latest
COPY --from=builder /tmp/app/jar/*.jar $GWDIR/, , jar Java , Java .
.Net Gateway
.Net, Apache Kafka. .Net IDE .
:
PEX -
InterSystems.EnsLib.PEX.BusinessService.— -
OnInitApache Kafka, Apache Kafka InterSystems IRISOnTearDownApache Kafka ( )OnMessageApache KafkaEns.StringContainer-
- Docker .
-:
FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
ENV ISC_PACKAGE_INSTALLDIR /usr/irissys
ENV GWLIBDIR lib
ENV ISC_LIBDIR ${ISC_PACKAGE_INSTALLDIR}/dev/dotnet/bin/Core21
WORKDIR /source
COPY --from=store/intersystems/iris-community:2020.2.0.211.0 $ISC_LIBDIR/*.nupkg $GWLIBDIR/
# copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# copy and publish app and libraries
COPY . .
RUN dotnet publish -c release -o /app
# final stage/image
FROM mcr.microsoft.com/dotnet/core/runtime:2.1
WORKDIR /app
COPY --from=build /app ./
# Configs to start the Gateway Server
RUN cp KafkaConsumer.runtimeconfig.json IRISGatewayCore21.runtimeconfig.json && \
cp KafkaConsumer.deps.json IRISGatewayCore21.deps.json
ENV PORT 55556
CMD dotnet IRISGatewayCore21.dll $PORT 0.0.0.0, :
FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build.Net Core 2.1 SDK .
ENV ISC_PACKAGE_INSTALLDIR /usr/irissys
ENV GWLIBDIR lib
ENV ISC_LIBDIR ${ISC_PACKAGE_INSTALLDIR}/dev/dotnet/bin/Core21
WORKDIR /source
COPY --from=store/intersystems/iris-community:2020.2.0.211.0 $ISC_LIBDIR/*.nupkg $GWLIBDIR/.Net Gateway InterSystems IRIS:
# copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# copy and publish app and libraries
COPY . .
RUN dotnet publish -c release -o /app-.
FROM mcr.microsoft.com/dotnet/core/runtime:2.1
WORKDIR /app
COPY --from=build /app ./.
RUN cp KafkaConsumer.runtimeconfig.json IRISGatewayCore21.runtimeconfig.json && \
cp KafkaConsumer.deps.json IRISGatewayCore21.deps.json.Net , .
ENV PORT 55556
CMD dotnet IRISGatewayCore21.dll $PORT 0.0.0.0 55556, .
!
docker-compose, ( UI Apache Kafka, ).
:
:
:
git clone https://github.com/intersystems-community/pex-demo.git
cd pex-demo
docker-compose pull
docker-compose up -dInterSystems IRIS Java/.Net
Java/.Net InterSystems ObjectScript , InterSystems ObjectScript Java/.Net
, Docker