choreography | Explore all the events from your Microservice | Microservice library

 by   fals C# Version: Current License: MIT

kandi X-RAY | choreography Summary

kandi X-RAY | choreography Summary

choreography is a C# library typically used in Architecture, Microservice, Prometheus applications. choreography has no bugs, it has no vulnerabilities, it has a Permissive License and it has low support. You can download it from GitHub.

I picture it as a Swagger-UI for events in your Microservice. It allows you to add automatic documentation and provide discoverability for those events that service produces, and where those events go.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              choreography has a low active ecosystem.
              It has 11 star(s) with 0 fork(s). There are 2 watchers for this library.
              OutlinedDot
              It had no major release in the last 6 months.
              choreography has no issues reported. There are no pull requests.
              It has a neutral sentiment in the developer community.
              The latest version of choreography is current.

            kandi-Quality Quality

              choreography has 0 bugs and 0 code smells.

            kandi-Security Security

              choreography has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              choreography code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              choreography is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              choreography releases are not available. You will need to build from source code and install.
              Installation instructions, examples and code snippets are available.
              It has 38 lines of code, 0 functions and 18 files.
              It has low code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of choreography
            Get all kandi verified functions for this library.

            choreography Key Features

            No Key Features are available at this moment for choreography.

            choreography Examples and Code Snippets

            No Code Snippets are available at this moment for choreography.

            Community Discussions

            QUESTION

            SBT run with provided works under the '.' projects but fails with no mercy under any subprojects
            Asked 2021-Dec-29 at 08:55

            I'm working with latest sbt.version=1.5.7.

            My assembly.sbt is nothing more than addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.1.0") .

            I have to work with a subprojects due to requirement need.

            I am facing the Spark dependencies with provided scope similar to this post: How to work efficiently with SBT, Spark and "provided" dependencies?

            As the above post said, I can manage to Compile / run under the root project but fails when Compile / run in the subproject.

            Here's my build.sbt detail:

            ...

            ANSWER

            Answered 2021-Dec-27 at 04:45

            Please try to add dependsOn

            Source https://stackoverflow.com/questions/70485137

            QUESTION

            Is event sourcing an enhanced pattern of choreography-based SAGA pattern?
            Asked 2021-Apr-02 at 13:08

            These days I am researching the Microservice inter-service communication patterns. So during my research, I found that there are two patterns called SAGA and event sourcing. But I couldn't find a resource on the internet to learn the difference between the two patterns. I mean I know event sourcing will capture the history of the event with the aid of an event store. So as per my understandings, I feel that event sourcing is like an extended version of choreography-based SAGA pattern. So I need to clarify is my argument acceptable or not. I will attach sample diagrams of the two patterns which I found on the internet below. Please use those diagrams during any of your explanations.

            References

            ...

            ANSWER

            Answered 2021-Apr-02 at 13:08

            The two are compatible patterns that address different problems, Sagas handle workflow processes where as event sourcing addresses how state is stored. Sagas provide a mechanism for handling a multi-step process and rolling back should steps fail (like a workflow). Where as Event Sourcing is the process of encoding the state of an entity by recording all its past changes.

            Sagas

            Lets say we are booking a holiday, we need to book flights, a hotel and hire a car. each of these processes is handled by a different microservice.

            We could create a microservice named BookingSaga which would be responsible for keeping track of the state of each booking. When we make a booking the BookingSaga service would

            • book the hotel
            • book the flight
            • book the car

            these can reply in any order, but if any one fails the BookingSaga would then begin a rollback and cancel any that had already been booked.

            https://microservices.io/patterns/data/saga.html

            Event Sourcing

            Event sourcing keeps track of the state of some entity by recording the changes that have happened to it.

            • Object A Name changed to "dave"
            • Object A Age Changed to 3
            • Object A Named changed to "sue"

            So we can see that Object A has a name of "sue" and an Age of 3 at the end of all the events. https://microservices.io/patterns/data/event-sourcing.html

            Source https://stackoverflow.com/questions/66918637

            QUESTION

            node/rabbitmq : choreography asynchronous and reponse
            Asked 2020-Sep-18 at 14:34

            Hello I have a question about choreography,

            I know it's asynchronous, but in this context:

            a requisition in endPoint / addEmployee (where to create an employee the existence in the department is necessary), I would check for an employee and send a message in my department queue to verify the existence and also sign up in the queue to hear the answer, would that be choreography?

            Or when confirming the existence of the employee, should I create and send the response already? or can i send the response after consuming the departament queue?

            Or in this case, would the orchestration be correct?

            ...

            ANSWER

            Answered 2020-Sep-18 at 14:34

            If I understand correctly you are receiving a request or a message which contains information to create an employee. One of those field is department name or id. And you would like to validate existence of this department information from department service. Is my understanding correct? If so I would say a lot easier solution would be keeping a basic department data on your employee service. You can get department created, updated events from department service and sync your data instead of asking for each and every employee.

            With this solution you wont have a dependency between services. You will just listen the topic or queue to which you wont know where the message comes from which is total opposite of the coupling.

            Source https://stackoverflow.com/questions/63953718

            QUESTION

            Choreography Sagas in DDD - Chain of Integration Events?
            Asked 2020-Sep-01 at 04:07

            I'm currently studying Saga pattern. Most examples seem to focus on Orchestration Sagas where we have one central saga execution coordinator service that dispatches and receives messages/events. Unfortunately information on how to implement Choreography Sagas seem to be lacking a bit.

            In domain driven design, we have multiple bounded contexts, ideally, where each bounded context is a self contained microservice. If microservice A wants to communicate with another microservice B we use Integration Events. Integration Events are published and subscribed to using some asynchronous communication - RabbitMQ, Azure Service Bus.

            Assuming we want to start some Saga, for example, where we have to run transactions on Order Service and Customer Service - how exactly do services communicate with each other? Is it just regular Integration Events or something entirely different?

            The way I see it and given picture below (source), Saga would be executed this way:

            1. A new order is created. Status is set to "Pending" and OrderSubmittedDomainEvent domain event is emitted.
            2. Domain event handler receives OrderSubmittedDomainEvent domain event, it then creates and dispatches ReserveCreditIntegrationEvent integration event.
            3. Customer Service receives ReserveCreditIntegrationEvent integration event.
            4. It attempts to reserve customer credit.
            5. If credit is successfully reserved, CustomerCreditReservedDomainEvent domain event is emitted.
            6. Domain event handler received CustomerCreditReservedDomainEvent domain event, it creates and dispatches CreditReservedIntegrationEvent integration event.
            7. Order Service receives CreditReservedIntegrationEvent integration event and sets Order Status to "Confirmed".
            8. saga is completed.

            Is this the right approach?

            ...

            ANSWER

            Answered 2020-Sep-01 at 04:07

            I think using Choreography rather then Orchestration for distributed transactions makes sense if you chose it for the right reasons. For instance, if you need to spare the usually higher effort of implementing a central choreography as you don't need to know what state a transaction is in until it has finished. Or because you know that the order of the transaction workflow is stable and is unlikely to change which would also be on the plus side of choreography. But would be a drawback for Choreography if the order changes frequently because you would need to adapt all microservices in that case...

            So you need to know the advantages and drawbacks of the two approaches.

            If you chose Choreography for the right reasons I would say that I am missing the compensation logic in your considerations. What if the credit was reserved but then the order fails in the order service? Compensation events need to be considered as well in such cases...

            Other than that there is the usual suspects:

            • such as making sure that each service will reliably send the next event after it processed the received event. For this you could look into the Transactional Outbox pattern.
            • or making sure that you have deduplication of events implemented in each of the services as for reliable sending of events accross distributed transactions you cannot be a hundred percent sure that an event will only be sent once.

            And if you are even interested in an alternative to the Saga pattern you can look into the Routing Slip pattern. It is well suited for distributed transaction workflows that will differ depending on the current use case by avoiding that each service needs to know each route. The sequence of the workflow is attached to the initial message of the transaction and all subsequent messages. Then each service receiving a message with the routing slip performs its tasks and passes the next message including the routing slip to the next station (service) on the list.

            Note: I am not sure what exactly you mean by ...IntegrationEvent. I would not differentiate between domain and integration events, all events are relevant from the business perspective in your example otherwise they would not be relevant to other Microservices.

            Source https://stackoverflow.com/questions/63597403

            QUESTION

            Why the pattern for microservices distributed transactions named as SAGA?
            Asked 2020-Aug-08 at 19:55

            I have gone through various SAGA patterns(Orchestration,Choreography), suggested for maintaining database consistency in microservices during distributed transactions.

            But I am not able to relate the literal word SAGA in the context.

            Why is it named as SAGA ?

            ...

            ANSWER

            Answered 2020-Aug-08 at 19:55

            Saga is not an abbreviation. The term “saga” was first defined in a 1987 publication. It also mentions that it was proposed by Bruce Lindsay.

            In their original version, the term saga refers to Long Lived Transactions(LLT).

            A LLT is a saga if it can be written as a sequence of transactions that can be interleaved with other transactions.

            The reason for choosing the word itself is not disclosed. Perhaps one of the literary meanings of the word saga was meant:

            a long, detailed story of connected events

            Source https://stackoverflow.com/questions/63319018

            QUESTION

            Checking for matches and comparing multiple lists, using Excel
            Asked 2020-Mar-25 at 23:16

            I am an noob when it comes to excel and would really appreciate some help with this task. I would like to compare these three separate lists of course numbers/names and check if a given course number has the same course name associated in each list.

            Here is an image of what I am trying to achieve.

            As you can see, course 2352 is associated with "Dance choreography and production" in the first two lists, so that's returned in a different check list with the an "OK". However, course 2354 is "Folk/ethnic dance" in the first list, and 'Admin program evaluation/research' in the third list, so that is not ok. Similarly, 0107 is associated with different names across the lists.

            Any ideas for how I could easily achieve this kind of check in excel? Many thanks!!

            ...

            ANSWER

            Answered 2020-Mar-25 at 16:29

            Use three COUNTIFS that check if any do not match:

            Source https://stackoverflow.com/questions/60853008

            QUESTION

            need clarification on microservices
            Asked 2020-Mar-06 at 08:39

            I need some clarifications on microservices. 1) As I understand only choreography needs event sourcing and in choreography we use publish/subscribe pattern. Also we use program likes RabbitMQ to ensure communication between publisher and subscribers.

            2) Orchestration does not use event sourcing. It uses observer pattern and directly communicate with observers. So it doesn't need bus/message brokers (like RabbitMQ). And to cooridante all process in orchestration we use mediator pattern.

            Is that correct?

            ...

            ANSWER

            Answered 2020-Mar-06 at 08:39

            TLDR: Choreography is the one which doesn't need persistance of the status of the process, orchestration needs to keep the status of the process somewhere.

            I think you got this somewhat mixed up with implementation details.

            Orchestration is called such, because there is a central process manager (sometimes mentioned as saga, wrongly imho) which directs (read orchestrates) operations across other services. In this pattern, the process manager directs actions to BC's, but needs to keep a state on previous operations in order to undo, roll back, or take any corrective or reporting actions deemed necessary. This status can be held either in an event stream, normal form db, or even implicitly and in memory (as in a method executing requests one by one and undoing the previous ones on an error), if the oubound requests are done through web requests for example. Please note that orchestrators may use synchronous, request-response communication (like making web requests). In that case the orchestrator still keeps a state, it's just that this state is either implicit (order of operations) or in-mem. State still exists though, and if you want to achieve resiliency (to be able to recover from an exception or any catastrophic failure), you would again need to persist that state on-disk so that you could recover.

            Choreography is called such because the pieces of business logic doing the operations observe and respond to each other. So for example when a service A does things, it raises an event which is observed by B to do a follow up actions, and so on and so forth, instead of having a process manager ask A, then ask B, etc. Choregraphy may or may not need persistance. This really depends on the corrective actions that the different services need to do.

            An example: As a practical example, let's say that on a purchase you want to reserve goods, take payment, then manifest a shipment with a courier service, then send an email to the recipient.

            The order of the operations matter in both cases (because you want to be able to take corrective actions if possible), so we decide do the payment after the manifestation with the courier.

            With orchestration, we'd have a process manager called PM, and the process would do:

            1. PM is called when the user attempts to make a purchase
            2. Call the Inventory service to reserve goods
            3. Call the Courier integration service to manifest the shipment with a carrier
            4. Call the Payments service to take a payment
            5. Send an email to the user that they're receiving their goods.

            If the PM notices an error on 4, they only corrective action is to retry to send the emai, and then report. If there was an error during payment then the PM would directly call Courier integration service to cancel the shipment, then call Inventory to un-reserve the goods.

            With choreography, what would happen is:

            1. An OrderMade event is raised and observed by all services that need data
            2. Inventory handles the OrderMade event and raises an OrderReserved
            3. CourierIntegration handles the OrderReserved event and raises ShipmentManifested
            4. Payments service handles the ShipmentManifested and on success raises PaymentMade
            5. The email service handles PaymentMade and sends a notification.

            The rollback would be the opposite of the above process. If the Payments service raised an error, Courier Integration would handle it and raise a ShipmentCancelled event, which in turn is handled by Inventory to raise OrderUnreserved, which in turn may be handled by the email service to send a notification.

            Source https://stackoverflow.com/questions/60502976

            QUESTION

            Term choreography in openshift Vs Container Orchestration in kubernetes
            Asked 2020-Jan-28 at 06:54

            In any Container Orchestration engine (kubernetes or openshift), there are steps to be carried out, starting from designing the pipeline to pull the source code, create the Docker images, define the configuration to deploy the application and expose it.

            Then, why is the term "choreography" is used in Openshift(reference) and term "Container Orchestration" is used in Kubernetes. What difference does it make?

            ...

            ANSWER

            Answered 2020-Jan-28 at 06:54

            OpenShift as a Kubernetes fork and vendor is free to invent whatever new terminology they want for marketing purposes. None of these terms have formal definitions in the first place, but even without that marketing is its own domain and rarely bound by such things. My guess is their marketing team thinks "choreography" conjures a feeling of overall poise and balance? Which the think aligns with their brand in some way.

            tl;dr it's advertising, not technical terms.

            Source https://stackoverflow.com/questions/59938646

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install choreography

            You can download it from GitHub.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/fals/choreography.git

          • CLI

            gh repo clone fals/choreography

          • sshUrl

            git@github.com:fals/choreography.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link