ballerina-platform / ballerina-library

The Ballerina Library
https://ballerina.io/learn/api-docs/ballerina/
Apache License 2.0
136 stars 64 forks source link

Add the messaging support of Apache RocketMQ #550

Open vongosling opened 5 years ago

vongosling commented 5 years ago

Hello, I know your community has your own principle for issue parts in GitHub. Here I rudely delete the question template, just to better express my request :-)

When I was looking for a serverless programming framework, and an efficient way to maintain test cases in CICD, when I came across ballerina solution. I had a rough look at the documents and part of the code of our project, which was very interesting. Here, I have some questions around my mind:

  1. I guess you employ ws02 language spec and build your framework based on JVM. Did you trouble by JVM's intrinsic problems, such as too many memory hosted and startup speed? Do you have the plan to integrate GraaVM?

  2. Does the ballerina have some support plan in CICD? Our team has always troubled by test case maintenance in the CICD field. As my experience, DSL is a good solution. but as your statement on the website, I have no such support, such as Cucumber Integration.

  3. Does the ballerina has the integration plan for Apache RocketMQ, which has a lot of use case around me, and I'm also looking for support from a serverless programming framework. It would be helpful to make more guys know about here.

riyafa commented 5 years ago

Hello, I know your community has your own principle for issue parts in GitHub. Here I rudely delete the question template, just to better express my request :-)

When I was looking for a serverless programming framework, and an efficient way to maintain test cases in CICD, when I came across ballerina solution. I had a rough look at the documents and part of the code of our project, which was very interesting. Here, I have some questions around my mind:

1. I guess you employ ws02 language spec and build your framework based on JVM. Did you trouble by JVM's intrinsic problems, such as too many memory hosted and startup speed? Do you have the plan to integrate GraaVM?

We did a POC with GraalVM. It was noticed that it did not work well with the concurrency model (lightweight threading) of Ballerina as it was not supported yet. For simple programs we experimented converting the byte code we generate using GraalVM. This research is still in progress. As a long term goal we plan to directly generate machine code using llvm to better support the lightweight threading model. Please find the discussion on this here

2. Does the ballerina have some support plan in CICD? Our team has always troubled by test case maintenance in the CICD field.  As my experience, DSL is a good solution. but as your statement on the website, I have no such support, such as Cucumber Integration.

Since Ballerina is an integration agile cloud native programming language it is possible to use CI/CD tools like Code fresh. Ballerina has its own test framework called testrina. And a demo on using code fresh can be found in the presentation by our CTO here

3. Does the ballerina has the integration plan for Apache RocketMQ, which has a lot of use case around me, and I'm also looking for support from a serverless programming framework. It would be helpful to make more guys know about here.

We have implemented certain messaging connectors for the brokers ActiveMQ Artemis, RabbitMQ and NATS. We also have a separate JMS connector. We also plan to implement a separate connector for AMQP 1.0 protocol. Since Ballerina is a community project we are open to suggestions and contributions. The JBallerina implementation of Ballerina which will be 1.0 in August is written to be interoperable with java. Hence it should be quite straightforward to implement a new connector for Apache RocketMQ. Though it is not in the current road map we would love contributions and are very willing to mentor on the basics.

sameerajayasoma commented 5 years ago

Hey @vongosling,

As per our current plan, we are working two Ballerina Language implementations. jBallerina and nBallerina.

Apache RocketMQ client in Ballerina. Most of our messaging clients provide a Ballerina API by wrapping the corresponding Java client. Once the Ballerina API is done, it can be pushed to Ballerina Central. We don't have enough cycles at the moment. However, contributions are welcome. :)