{"id":19992232,"url":"https://github.com/Shuttle/Shuttle.Esb.RabbitMQ","last_synced_at":"2025-05-04T11:30:47.607Z","repository":{"id":22474778,"uuid":"25813757","full_name":"Shuttle/Shuttle.Esb.RabbitMQ","owner":"Shuttle","description":"RabbitMQ implementation for use with Shuttle.Esb. ","archived":false,"fork":false,"pushed_at":"2025-03-02T14:10:49.000Z","size":835,"stargazers_count":5,"open_issues_count":0,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-09T20:44:09.866Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://shuttle.github.io/shuttle-esb/implementations-rabbitmq/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Shuttle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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":"2014-10-27T10:28:27.000Z","updated_at":"2025-03-02T14:10:54.000Z","dependencies_parsed_at":"2024-11-30T12:17:32.150Z","dependency_job_id":"4744bad2-fb42-4b70-98ed-f52bbf551284","html_url":"https://github.com/Shuttle/Shuttle.Esb.RabbitMQ","commit_stats":null,"previous_names":["shuttle/shuttle-esb-rabbitmq"],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuttle%2FShuttle.Esb.RabbitMQ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuttle%2FShuttle.Esb.RabbitMQ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuttle%2FShuttle.Esb.RabbitMQ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shuttle%2FShuttle.Esb.RabbitMQ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shuttle","download_url":"https://codeload.github.com/Shuttle/Shuttle.Esb.RabbitMQ/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252329150,"owners_count":21730557,"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":[],"created_at":"2024-11-13T04:52:05.499Z","updated_at":"2025-05-04T11:30:44.431Z","avatar_url":"https://github.com/Shuttle.png","language":"C#","readme":"# RabbitMQ\r\n\r\n```\r\nPM\u003e Install-Package Shuttle.Esb.RabbitMQ\r\n```\r\n\r\nThis RabbitMQ implementation follows the `at-least-once` delivery mechanism supported by Shuttle.Esb.\r\n\r\nIf necessary you may want to use an *outbox* for a `store-and-forward` solution.  By using a transactional outbox such as the `Shuttle.Esb.Sql.Queue` implementation you could roll back sending of messages on failure.\r\n\r\n## Installation\r\n\r\nIf you need to install RabbitMQ you can \u003ca target='_blank' href='https://www.rabbitmq.com/download.html'\u003efollow these instructions\u003c/a\u003e.\r\n\r\n## Configuration\r\n\r\nThe URI structure is `rabbitmq://configuration-name/queue-name`.\r\n\r\n```c#\r\nservices.AddRabbitMQ(builder =\u003e\r\n{\r\n    builder.AddOptions(\"local\", new RabbitMQOptions\r\n    {\r\n        Host = \"127.0.0.1\",\r\n        VirtualHost = \"/\",\r\n        Port = -1,\r\n        Username = \"shuttle\",\r\n        Password = \"shuttle!\",\r\n        PrefetchCount = 25,\r\n        QueueTimeout = TimeSpan.FromMilliseconds(25),\r\n        RequestedHeartbeat = TimeSpan.FromSeconds(30),\r\n        ConnectionCloseTimeout = TimeSpan.FromSeconds(1),\r\n        OperationRetryCount = 3,\r\n        UseBackgroundThreadsForIO = true,\r\n        Priority = 0,\r\n        Persistent = true,\r\n        Durable = true\r\n    });\r\n});\r\n```\r\n\r\nThe default JSON settings structure is as follows:\r\n\r\n```json\r\n{\r\n  \"Shuttle\": {\r\n    \"RabbitMQ\": {\r\n      \"local\": {\r\n        \"Host\": \"127.0.0.1\",\r\n        \"VirtualHost\": \"/\",\r\n        \"Port\": -1,\r\n        \"Username\": \"shuttle\",\r\n        \"Password\": \"shuttle!\",\r\n        \"PrefetchCount\": 25,\r\n        \"QueueTimeout\": \"00:00:25\",\r\n        \"RequestedHeartbeat\": \"00:00:30\",\r\n        \"ConnectionCloseTimeout\": \"00:00:01\",\r\n        \"OperationRetryCount\": 3,\r\n        \"UseBackgroundThreadsForIO\": true,\r\n        \"Priority\": 0,\r\n        \"Persistent\": true,\r\n        \"Durable\": true\r\n      }\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n## Options\r\n\r\n| Option | Default    | Description | \r\n| --- | --- | --- |\r\n| `Host` | | The RabbitMQ host to connect to. |\r\n| `VirtualHost` | `\"/\"` | The virtual host to connect to. |\r\n| `Port` | -1 | Specifies the port to connect to.  A value of `-1` represents `AmqpTcpEndpoint.UseDefaultPort`. |\r\n| `Username` | | The username to send as a credential. |\r\n| `Password` | | The password to send as a credential. |\r\n| `PrefetchCount` | 25 | Specifies the number of messages to prefetch from the queue. |\r\n| `QueueTimeout` | `00:00:25` | How long to wait when retrieving a message from the queue before timing out and returing `null`. |\r\n| `RequestedHeartbeat` | `00:00:30` | Heartbeat timeout to use when negotiating with the server. |\r\n| `ConnectionCloseTimeout` | `00:00:01` | The duration to wait wait for connections to be closed. |\r\n| `OperationRetryCount` | 3 | How many times to retry relevant queue operations in the event that they fail.  Once the retries have run out the original exception is thrown. |\r\n| `UseBackgroundThreadsForIO` | `true` | Determines whether backgrounds threads are used for the I/O loop. |\r\n| `Priority` | 0 | Determines the number of priorities (`x-max-priority`) supported by the queue. |\r\n| `Persistent` | true | Determines whether messages will be persisted.  Please be sure of the possible consequences before setting to 'false'. |\r\n| `Durable` | true | Determines whether the queue is durable.  Please be sure of the possible consequences before setting to 'false'. |","funding_links":[],"categories":["C\\#"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FShuttle%2FShuttle.Esb.RabbitMQ","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FShuttle%2FShuttle.Esb.RabbitMQ","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FShuttle%2FShuttle.Esb.RabbitMQ/lists"}