{"repo":"Courtsite/temporal-go-helpers","free":true,"listed":false,"github":"https://github.com/Courtsite/temporal-go-helpers","clone":"git clone https://github.com/Courtsite/temporal-go-helpers.git","description":":arrows_clockwise: Common convenience methods, and developer ergonomics for Temporal's Go SDK.","language":"Go","stars":40,"topics":["workflow-engine","workflow-automation","golang","distributed-systems","service-bus","workflow-management","microservices","sdk-go","saga","distributed-transactions"],"license":"MIT","category":"workflow-automation","readme_excerpt":"temporal-go-helpers 🔃 Common convenience methods, and developer ergonomics for Temporal's Go SDK. This is still under development. Use at your own risk. What's Inside? - Saga - Receive Signal with Timeout - Drain Channel - Any suggestions? Ping us! Saga Based on https://github.com/uber-go/cadence-client/issues/797. The Saga Pattern is used for managing data consistency across microservices in distributed transaction scenarios. This module provides APIs for easily executing compensation rollback logic, even after the parent workflow has been cancelled. Example: It is worth noting that in simpler examples like above, we do not necessarily need or benefit from the Saga helper this module provides. We can simply call workflow.ExecuteActivity(..) within the if err != nil block. But, for more complex examples, it can become quite unmanageable, and in such cases, it is often easier to call saga.Compensate(ctx) . Your mileage may vary. The compensation operations are executed in LIFO order. The various compensation rollback logic can be executed in parallel by setting ParallelCompensation to true . Receive Signal with Timeout Based on https://github.com/uber-go/cadence-client/issues/789. It is fairly common to want to wait on a signal with a timeout. For example, we may want to wait for a user to click on a verification token link or wait for an OTP to be entered, but timeout, and continue if it takes too long. With the vanilla Go SDK, this pattern will often look like this: But, wi","default_branch":null,"files":null,"tree":[],"storefront":"/r/Courtsite","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Courtsite/temporal-go-helpers/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}