{"id":22770591,"url":"https://github.com/cloudnimble/simplemessagebus","last_synced_at":"2025-04-15T03:52:00.040Z","repository":{"id":48218179,"uuid":"174758754","full_name":"CloudNimble/SimpleMessageBus","owner":"CloudNimble","description":"A framework for reliable, distributed, scalable, cross-platform event processing on .NET.","archived":false,"fork":false,"pushed_at":"2025-01-30T06:10:11.000Z","size":285,"stargazers_count":14,"open_issues_count":0,"forks_count":3,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-15T03:51:56.306Z","etag":null,"topics":["azure-storage","csharp","dotnet-core"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CloudNimble.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-09T23:52:11.000Z","updated_at":"2025-02-06T15:27:08.000Z","dependencies_parsed_at":"2023-11-14T22:24:44.352Z","dependency_job_id":"21164a53-c689-428f-9205-cc9ec928f330","html_url":"https://github.com/CloudNimble/SimpleMessageBus","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CloudNimble%2FSimpleMessageBus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CloudNimble%2FSimpleMessageBus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CloudNimble%2FSimpleMessageBus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CloudNimble%2FSimpleMessageBus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CloudNimble","download_url":"https://codeload.github.com/CloudNimble/SimpleMessageBus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249003954,"owners_count":21196794,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["azure-storage","csharp","dotnet-core"],"created_at":"2024-12-11T15:32:54.846Z","updated_at":"2025-04-15T03:52:00.024Z","avatar_url":"https://github.com/CloudNimble.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eSimpleMessageBus - By CloudNimble\u003c/h1\u003e\n\u003cbr\u003e\n\u003ch4 align=\"center\"\u003eA framework for reliable, distributed, scalable, cross-platform event processing on .NET.\u003c/h4\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cbr\u003e\n\n[Website][website-link] \u0026nbsp;\u0026nbsp;\u0026nbsp; | \u0026nbsp;\u0026nbsp;\u0026nbsp; [Releases][release-link] \u0026nbsp;\u0026nbsp;\u0026nbsp;| \u0026nbsp;\u0026nbsp;\u0026nbsp; [Documentation][doc-link] \u0026nbsp;\u0026nbsp;\u0026nbsp;\n\n[![Build Status][devops-rtm-build-img]][devops-rtm-build] [![Release Status][devops-rtm-release-img]][devops-rtm-release] [![Twitter][twitter-img]][twitter-intent]\n\n\u003c/div\u003e\n\n## What is SimpleMessageBus?\n**SimpleMessageBus** is a system for making applications more reliable and responsive to users by processing potentially long-running tasks out-of-band from\nthe user's main workflow. It is designed to run either on-prem, or in the Microsoft Cloud, making it suitable for any application, and able to grow as \nyour needs do.\n\n### Benefits\n - Allows you to build more user-responsive apps.\n - Increases testability by decoupling long-latency events from UI-generated workflows.\n - Pushes third-party dependencies to the edges of your app, streamlining deployments.\n - Increases fault-tolerance by allowing you to easily track and replay failed messages.\n\n\n### Ecosystem\n\n| Project | Release | Latest | Description |\n|---------|--------|-------------|-------------|\n| [SimpleMessageBus.Core][smb-core-nuget]    | [![smb-core-rtm][smb-core-rtm-nuget-img]][smb-core-nuget] | [![smb-core-ci][smb-core-ci-nuget-img]][smb-core-nuget] | Core components to provide messaging and file operations capabilities for On-Prem and Cloud environments.\n| [SimpleMessageBus.Dispatch][smb-dispatch-nuget]    | [![smb-dispatch-rtm][smb-dispatch-rtm-nuget-img]][smb-dispatch-nuget] | [![smb-dispatch-ci][smb-dispatch-ci-nuget-img]][smb-dispatch-nuget] | Messaging integration components with Azure WebJobs SDK dependency to accept and direct messages to proper message handler(s).\n| [SimpleMessageBus.Hosting][smb-hosting-nuget]    | [![smb-hosting-rtm][smb-hosting-rtm-nuget-img]][smb-hosting-nuget] | [![smb-hosting-ci][smb-hosting-ci-nuget-img]][smb-hosting-nuget] | Configuration components to allow selection of hosting type (i.e: WindowsService vs. Console).\n| [SimpleMessageBus.Publish][smb-publish-nuget]    | [![smb-publish-rtm][smb-publish-rtm-nuget-img]][smb-publish-nuget] | [![smb-publish-ci][smb-publish-ci-nuget-img]][smb-publish-nuget] | Publishing integration component with Azure Queue Storag dependency to allow messages to be \"put\" on queues\n\n### Architecture\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://user-images.githubusercontent.com/1657085/54485094-36294e80-4849-11e9-80af-fdc165e60a6d.png\"\u003e\n  \u003cstrong\u003eThe SimpleMessageBus Architecture\u003c/strong\u003e\n\u003c/p\u003e\n\n**SimpleMessageBus** consists of two main parts: \n\n### Publish\n - Manages the process of putting \"messages\" on the queue.\n - Very lightweight, minimal dependencies.\n - Straightforward configuration with Dependency Injection extensions.\n\n### Dispatch\n - Runs in a separate process using the Azure WebJobs SDK.\n - Manages messages coming off the queue and directs them to the proper message handler(s) to be processed.\n - Allows multiple handlers to process the same message.\n - Straightforward configuration with Dependency Injection extensions.\n - Can run in the following environments:\n   - Console app (cross platform)\n   - Windows Service\n   - Azure WebJobs (Azure's web app offering)\n   - Azure Functions (Azure's \"serverless\" offering)\n\n### Queues Supported\n**SimpleMessageBus** currently supports two backing queues: the **local file system**, and **Azure Storage Queues**. This allows the Dispatcher to run entirely \non-prem with no Azure dependencies, but still get the same durability and reliability through local poison queues and completed event storage.\n\n### Scenarios Supported\n**SimpleMessageBus** was designed to streamline the following scenarios:\n - User-created long-latency events (post-registration emails, share notifications, etc)\n - Incoming webhook processing (Stripe, SendGrid, GitHub, etc)\n - Very-long-running tasks (batch processing, cron jobs, etc)\n\nYou can read more about these scenarios in our blog post.\n\n## Getting Started\nThe process of getting **SimpleMessageBus** working in your app is as easy as the name suggests.\n  1. Create a new .NET Standard 2.0, .NET 6 or .NET 7 project to that will hold your defined Message types, install the `SimpleMessageBus.Core` NuGet package, and build out \n     your Message types.\n  2. Install the `SimpleMessageBus.Publish` NuGet package into your app, reference the library you created in Step 1, and modify your workflows to publish \n     Messages in response to events.\n  3. Create a new .NET Standard 2.0, .NET 6 or .NET 7 project that will hold your MessageHandlers, install the `SimpleMessageBus.Core` NuGet package, and build out your \n     MessageHandlers.\n  4. Create a new Unit Test project, reference the library you created in Step 3, and test your MessageHandler library with a variety of synthetic Messages.\n  5. Create a new Console project, install the `SimpleMessageBus.Dispatch` NuGet package, reference the library you created in Step 3, and inject your \n     MessageHandlers into the DependencyInjection container.\n\n## Feedback\n\nFeel free to send us feedback on [Twitter][twitter-link] or [file an issue][issues-link]. Feature requests are always welcome. If you wish to contribute, please take a quick look at the [contribution guidelines](./.github/CONTRIBUTING.md).\n\n## Code of Conduct\n\nPlease adhere to our [Code of Conduct](./CODE_OF_CONDUCT.md) during any interactions with \nCloudNimble team members and community members. It is strictly enforced on all official CloudNimble\nrepositories, websites, and resources. If you encounter someone violating\nthese terms, please let us know via DM on [Twitter][twitter-link] or via email at opensource@nimbleapps.cloud and we will address it as soon as possible.\n\n## Contributors\n\nThank you to all the people who have contributed to the project: [Source code Contributors][contri-link]\n\nPlease visit our [Contribution](./.github/CONTRIBUTING.md) document to start contributing to our project.\n\n\n\u003c!-- Base Link References --\u003e\n\n[website-link]: https://nimbleapps.cloud/\n[project-link]: https://github.com/CloudNimble/SimpleMessageBus/\n[release-link]: https://github.com/CloudNimble/SimpleMessageBus/releases\n[doc-link]: https://github.com/CloudNimble/SimpleMessageBus/tree/main/docs\n[contri-link]: https://github.com/CloudNimble/SimpleMessageBus/graphs/contributors\n[issues-link]: https://github.com/CloudNimble/SimpleMessageBus/issues\n\n[twitter-link]: https://twitter.com/cloud_nimble\n[twitter-intent]:https://twitter.com/intent/tweet?via=cloud_nimble\u0026text=Check%20out%20SimpleMessageBus%2C%20the%20framework%20for%20reliable%2C%20distributed%2C%20scalable%2C%20cross-platform%20event%20processing%20on%20.NET.\u0026hashtags=dotnetcore%2Cazure\n[twitter-img]:https://img.shields.io/badge/share-on%20twitter-55acee.svg?style=for-the-badge\u0026logo=twitter\n\n\u003c!-- CI/CD Link References --\u003e\n\n[devops-rtm-build]: https://dev.azure.com/cloudnimble/SimpleMessageBus/_build/latest?definitionId=22\n[devops-rtm-release]: https://dev.azure.com/cloudnimble/SimpleMessageBus/_release?view=all\u0026definitionId=2\n\n[devops-rtm-build-img]: https://img.shields.io/azure-devops/build/cloudnimble/SimpleMessageBus/22.svg?style=for-the-badge\u0026logo=azuredevops\n[devops-rtm-release-img]: https://img.shields.io/azure-devops/release/cloudnimble/202d9877-a3b6-4c67-ae98-768f15eaf6d8/2/2?logo=Azure%20DevOps\u0026style=for-the-badge\n\n\u003c!-- Ecosystem Link References --\u003e\n\n[smb-core-nuget]: https://www.nuget.org/packages/SimpleMessageBus.Core\n[smb-dispatch-nuget]: https://www.nuget.org/packages/SimpleMessageBus.Dispatch\n[smb-hosting-nuget]: https://www.nuget.org/packages/SimpleMessageBus.Hosting\n[smb-publish-nuget]: https://www.nuget.org/packages/SimpleMessageBus.Publish\n\n\u003c!-- Badges --\u003e\n\n[smb-core-rtm-nuget-img]: https://img.shields.io/nuget/v/SimpleMessageBus.Core?label=\u0026logo=NuGet\u0026style=for-the-badge\n[smb-dispatch-rtm-nuget-img]: https://img.shields.io/nuget/v/SimpleMessageBus.Dispatch?label=\u0026logo=NuGet\u0026style=for-the-badge\n[smb-hosting-rtm-nuget-img]: https://img.shields.io/nuget/v/SimpleMessageBus.Hosting?label=\u0026logo=NuGet\u0026style=for-the-badge\n[smb-publish-rtm-nuget-img]: https://img.shields.io/nuget/v/SimpleMessageBus.Publish?label=\u0026logo=NuGet\u0026style=for-the-badge\n\n[smb-core-ci-nuget-img]: https://img.shields.io/nuget/vpre/SimpleMessageBus.Core?label=\u0026logo=NuGet\u0026style=for-the-badge\n[smb-dispatch-ci-nuget-img]: https://img.shields.io/nuget/vpre/SimpleMessageBus.Dispatch?label=\u0026logo=NuGet\u0026style=for-the-badge\n[smb-hosting-ci-nuget-img]: https://img.shields.io/nuget/vpre/SimpleMessageBus.Hosting?label=\u0026logo=NuGet\u0026style=for-the-badge\n[smb-publish-ci-nuget-img]: https://img.shields.io/nuget/vpre/SimpleMessageBus.Publish?label=\u0026logo=NuGet\u0026style=for-the-badge\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudnimble%2Fsimplemessagebus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudnimble%2Fsimplemessagebus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudnimble%2Fsimplemessagebus/lists"}