Initial Release
Demo showcasing InterSystems IRIS integration with Kafka via PEX.
The Production EXtension (PEX) framework provides you with a choice of implementation languages when you are developing interoperability productions. Interoperability productions enable you to integrate systems with different message formats and communication protocols. If you are not familiar with interoperability productions, see Introduction to Productions.
As of January 2022, PEX supports Python, Java, and .NET (C#) languages. PEX provides flexible connections between business services, processes, and operations that are implemented in PEX-supported languages or in InterSystems ObjectScript. In addition, you can use PEX to develop, inbound and outbound adapters. The PEX framework allows you to create an entire production in Pytohn or Java or .NET or to create a production that has a mix of Python, Java, .NET, or ObjectScript components. Once integrated, the production components written in Pytohn, Java, and .NET are called at runtime and use the PEX framework to send messages to other components in the production.
git clone https://github.com/intersystems-community/pex-demo.git
cd pex-demo
docker compose pull
docker compose up -d
KafkaConsumer
service to catch a message on Kafka side (otherwise it would be processed too quickly).KafkaProducer
operation by sending a dc.KafkaRequest
message (topic: test
, with any text, if text is a positive integer it would start a cycling message interchange). It would send a message to Kafka via Java Gateway.Resources
> Topics
> test
> Browse Data
> Fetch
to see that your message is enqueued.KafkaConsumer
serviceKafkaConsumer
service. It would start receiving messages from test
topic via .Net Gateway. If you want to receive messages from another topic, modify Remote Settings
value for the Service.Ens.StringContainer
request to KafkaProcess
with a small integer value. Check emergent cycle session counting down to zero in a Message Viewer on KafkaConsumer
service.Example of working with dynamic proxy objects:
docker-compose exec iris iris session iris
set GW = ##class(%Net.Remote.Gateway).%New()
set sc = GW.%Connect("netgw", 55556)
set random = ##class(%Net.Remote.Object).%New(GW,"System.Random")
write random.Next(100)
set sc = GW.%Disconnect()
http://localhost:52773/csp/user/EnsPortal.ProductionConfig.zen
http://localhost:8082
51773
55555
55556
55557
2181
9092