-
Notifications
You must be signed in to change notification settings - Fork 221
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Messaging patterns #19
Comments
Question: So this framework is not going to introduce some base messaging schema? As you mentioned low level and high-level problem. OpenMessaging has many APIs other than other already existing protocol. IMO, we could use OpenMessaging as our messaging programming model and use the MQTT or AMQP as our inner low-level wire protocol. As for correlation Id, global transaction id and other optional heads, we just learn more about HTTP2 protocol redefinition, we hope to remove some unnecessary or less-useful feature at the first. If you have any suggestion about here, please let us know :-) |
@vongosling - I actually so far like OpenMessaging rise, but must study it in more detail and understand what it actually targets, I will be posting some of my observations later. In general there were multiple stages which I went trough with Oracle/IBM or Apache Camel/ServiceMix based data integrations (async usually over JMS) in the past for example, while I left this domain and focus on microservices usually based on Kafka messaging:
So I still need understand what from these evolutionary steps is OpenMessaging bringing into place, and also if you bring full cover or you just focus on async as you mentioned AMQP and MQTT, we still have here REST api over HTTP while I hope it will get abandoned during my life within data integration as I prefer only async systems (and I know that http2 does a lot on async field as well, but second argument to not use it is simply the latency overhead to establish HTTP session...), but HTTP or notHTTP is different discussion. Best regards, Ladislav |
@archenroot I really understand your question about OpenMesssaging. IMO, OpenMessaging is not entirely an API Specs for your mentioned Construct Domain, we also cover the router, streaming computation, connector, benchmark, metrics and so on, It is even like an Ecosystem around the messaging. Until now, we are trying our best to polish the core of the OpenMessaging, we hope it lightweight, scalable and full-featured(but non-optional) in the messaging field. Base on it, we could further to integrate with other existing wire-level protocols(AMQP, MQTT, WebSocket, HTTP2), of Course, including serverless. As you mentioned the message pattern, I also use it in the past ten years, It is really a good practice in the Enterprise Integration with Messaging solution. Also, if you have any opinion about here, we could discuss more deeply :-) |
Hi @archenroot The correlation id seems to make sense, but I couldn't image the specific scenario, could you please introduce the case or scenario you encountered in a real project? |
@archenroot Recently, some guys get to me to hope to let gRPC have a messaging async capability. IMO, it is a good start to re-add the correlation id, thanks for your suggestion. |
@vongosling - thank you for your answer, I missed it back in time, so response with delay. Otherwise this is really great topic and I thought that Open Messaging is more than just message patterns, thanks for confirmation. Here is sample message header I used in SOA, but also in emerging microservices architectures. The message headers should be mostly generic and optional and they can mixture both technical (prefered from my perspective) but with business (optional) metadata. Sample of header (it is not full scenario), while it is in XSD form there is no problem to convert it into Json of course on the fly:
It is really just a sample where this schema is followed by other schemas where one can define and I used, it is quite big... so I discuss here just the header as message metadata, in this particular scenario I showed my correlationId is hidden under Sender object as SenderMessageID. I am not saying my schema is holly grail :-)), and my whole setup is quite heavy, so it could be done in more lightweight way, but I think we might come up with something like generic messaging headers. We could come up with some proposal as PR and maybe ask community if they agree on specific parameters before added in. I believe genericity is the judgement here. @zhouxinyu - correlationId you can see as global transaction ID, when you have sequence of messages within a flow like:
Also note that for example for reading operations I think using message headers can be optional, but is fully required for write operations as you can use those metadata for audit purposes like:
This is especially very handy when you integrate 2 or more foreign systems owned by different parties. When you have issue with some message flow, you just provide to the other party your reuqestId, correlation Id, but is optional. I define in my schema so called object DomainMap, this is nothing else than multidimensional table and Properties which is nothing more than key/value store. These are optional and actually you can really put there anything which will help both sides to smoothly integrate. Thx for any comments. |
I have looked through your XSD quickly, some event sourcing showing ...Hah, recently, we add messaging schema in OpenMessaging, would you like to help us to review the initial schema(Is it suitable for your usecase), we will appreciate your sincere advice. “I believe genericity is the judgement here.” Yes, we have the same belief. |
I will take a look, good to hear, could you share direct link of the schema you talk about, just I look at right place.
…On Sun, Jun 24, 2018, 1:39 PM von gosling ***@***.***> wrote:
I have looked through your XSD quickly, some event sourcing showing
...Hah, recently, we add messaging schema in OpenMessaging. Now, you could
help us to review the initial schema, we will appreciate your sincere
advice.
“I believe genericity is the judgement here.” Yes, we have the same belief.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#19 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAhyKHdMvjsbBypn6MSOblEz8z1kYUqtks5t_3p8gaJpZM4SZB77>
.
|
@zhouxinyu - it is very simple use cases for correlationId. Use case 1 - 2 application first responsible for requesting payments, second for validation of payments The flow in case of sync flow will be as following: So this example demonstrates correlation Id, in your Audit Log (Audit Pattern) which is implemented in Event sourcing architectures via Event Store directly and does not require any additional components shows 3 messages bounded by correlationId, it tells you they are all part of same flow/process instance. |
Hi guys,
I like a lot this initiative, but I am missing something common in advanced messaging schemas, some common meta headers and messaging patterns. Sorry if I just overlooked it while browsing in javadocs.
There exists already quite robust definitions of messaging patterns, especially for event-driven system or asynchronous communication there are some common message headers to be used like message Id, correlation Id, global transaction id, etc. I saw this framework only introduces generic key/value store like system and user headers within message.
Question: So this framework is not going to introduce some base messaging schema? It more focuses on high level fundamentals and leave the user to do what he wants? I think there could be added in time some kind of proposal for messaging patterns as low level implementation, what do you think?
We for example go to adopt IEC 61968-100 standard which target all possible situations on low level. Or OpenMessaging is more about foundation to be used to implement something like IEC messaging standard?
Thank you for answers.
Ladislav
The text was updated successfully, but these errors were encountered: