{"id":19075827,"url":"https://github.com/secomind/mississippi","last_synced_at":"2025-07-15T10:10:43.020Z","repository":{"id":239293188,"uuid":"798325923","full_name":"secomind/mississippi","owner":"secomind","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-06T16:37:09.000Z","size":131,"stargazers_count":3,"open_issues_count":2,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-05-28T04:22:57.199Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/secomind.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2024-05-09T14:55:29.000Z","updated_at":"2025-03-06T16:37:13.000Z","dependencies_parsed_at":"2024-05-11T10:00:32.255Z","dependency_job_id":"5d1be15f-d253-4231-a835-b40e84b77e4f","html_url":"https://github.com/secomind/mississippi","commit_stats":null,"previous_names":["secomind/mississippi"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/secomind/mississippi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secomind%2Fmississippi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secomind%2Fmississippi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secomind%2Fmississippi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secomind%2Fmississippi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/secomind","download_url":"https://codeload.github.com/secomind/mississippi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/secomind%2Fmississippi/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264074300,"owners_count":23553482,"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-09T01:56:06.625Z","updated_at":"2025-07-15T10:10:43.000Z","avatar_url":"https://github.com/secomind.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!---\n  Copyright 2024 SECO Mind Srl\n  SPDX-License-Identifier: Apache-2.0\n--\u003e\n\n# Mississippi\n\nDistributed message processing framework over AMQP.\nMessages are sharded into a configurable amount of queues,\nand the ones belonging to the same shard are guaranteed to be processed\nin the same order as they were sent. The sharding key can be any Erlang term!\nThere can be any number of consumers, as long as they process messages from\nnon-overlapping queue ranges.\n\n## Try it!\nFirst of all, let's bring up a RabbitMQ instance:\n\n```sh\ndocker run --rm -p 5672:5672 -p 15672:15672 rabbitmq:3.8.34-management\n```\n### Producer\nStart a producer with\n```elixir\ninit_options = [\n    amqp_producer_options: [host: \"localhost\"],\n    mississippi_config: [\n        queues: [events_exchange_name: \"\", total_count: 128, prefix: \"mississippi_\"]\n    ]\n]\n# [...]\nMississippi.Producer.start_link(init_options)\n# {:ok, \u003cpid\u003e}\n```\nThe producer will publish data on 128 AMQP queues (0 to 127).\nTo do so:\n```elixir\nMississippi.Producer.EventsProducer.publish(\"aaa\", sharding_key: \"user_1\")\n# :ok\n```\n\n### Consumer\nStart a consumer with\n```elixir\ninit_options = [\n    amqp_consumer_options: [host: \"localhost\"],\n    mississippi_config: [\n        queues: [events_exchange_name: \"\", prefix: \"mississippi_\", range_start: 0, range_end: 127, total_count: 128],\n        message_handler: My.Custom.MessageHandler\n    ]\n]\n# [...]\nMississippi.Consumer.start_link(init_options)\n# {:ok, \u003cpid\u003e}\n```\n\nThe message handler can be customized according to your needs: the\n`Mississippi.Consumer.DataUpdater.Handler` behaviour is provided to do so.\nA default implementation that just prints the message to standard output is available\nat `lib/consumer/data_updater/impl.ex`.\n\n\n# License\n\nMississippi source code is released under the Apache 2 License.\n\nCheck the LICENSE file for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsecomind%2Fmississippi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsecomind%2Fmississippi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsecomind%2Fmississippi/lists"}