<prompt> Unda hati ya Elixir inayounganishwa na seva ya RabbitMQ na kusikiliza ujumbe kwenye foleni maalum. Ujumbe unapopokelewa, hati inapaswa kuchanganua upakiaji wa JSON, kutekeleza uthibitishaji wa data ya kimsingi, na kuingiza data hiyo kwenye hifadhidata ya PostgreSQL. Tumia mbinu zinazofaa za kushughulikia makosa ili kuhakikisha kuwa hati inaweza kupona kutokana na matatizo yanayoweza kutokea.  <response>: Ili kuunda hati ya Elixir inayounganishwa na seva ya RabbitMQ, kusikiliza ujumbe kwenye foleni maalum, na kuingiza data kwenye hifadhidata ya PostgreSQL, utahitaji kutumia maktaba kadhaa:1. amqp - Maktaba ya mteja ya RabbitMQ ya Elixir.2. postgrex - Kiendeshi cha PostgreSQL cha Elixir.3. jason - Kichanganuzi cha JSON cha Elixir.Kwanza, ongeza vitegemezi hivi kwenye faili yako ya mix.exs:elixirdefp deps kufanya :amqp, 2.0, :postgrex, 0.0.0, :jason, 1.0 mwishoKisha, unda sehemu mpya inayoitwa RabbitConsumer katika faili inayoitwa rabbit_consumer.ex. Sehemu hii itashughulikia kuunganisha kwa RabbitMQ, kusikiliza ujumbe, kuchanganua mizigo ya JSON, kuthibitisha data na kuingiza rekodi kwenye hifadhidata ya PostgreSQL.elixirdefmodule RabbitConsumer kufanya zinahitaji Logger alias AMQP.Connection alias AMQP.Channel kwa jina la Postgrex foleni_name jina_la_la_la_zako exchange_name jina_la_la_mabadilishano def start_link fanya Anza mchakato Task.start_linkfn - run end mwisho defp run fanya na :ok, conn - Connection.open, :ok, chan - Channel.funguaconn, :ok - setup_queuechan fanya consume_messageschan mwingine kosa - Logger.errorImeshindwa kuunganisha au kusanidi foleni: kaguakosa Mchakato.usingizi5_000 kukimbia mwisho mwisho defp setup_queuechannel fanya na :ok - Channel.queue_declarechannel, queue_name, :ok - Channel.exchange_declarechannel, exchange_name, :direct, :ok - Channel.queue_bindchannel, queue_name, exchange_name fanya :sawa, kituo mwisho mwisho defp consume_messageschannel fanya Basic.consumechannel, queue_name handle_response mwisho defp handle_response:basic_deliver, payload, meta fanya na :ok, json - Jason.decodepayload, :ok, data - validate_datajson, : sawa, _matokeo - ingiza_into_dbdata fanya Logger.infoUjumbe umechakatwa kwa ufanisi mwingine kosa - Logger.errorImeshindwa kuchakata ujumbe: kukaguakosa mwisho Endelea kutumia ujumbe tumia_ujumbechaneli mwisho defp validate_datadata fanya Tekeleza mantiki yako ya uthibitishaji hapa Rudisha :sawa, data ikiwa data ni halali, au :kosa, sababu vinginevyo :sawa, data mwisho defp insert_into_dbdata fanya na :ok, pid - Postgrex.start_linkdatabase: your_database, username: your_username, password: your_password, :ok, tokeo - Postgrex.querypid, INGIZA KWENYE jedwali_lako safuwima1, safuwima2 THAMANI 1, 2, datakey1, datakey2 fanya :sawa, matokeo mwingine kosa - Logger.errorImeshindwa kuingiza kwenye hifadhidata: kaguakosa :kosa, kosa mwisho mwishomwishoHatimaye, sasisha kitendakazi cha start2 ya programu yako katika moduli kuu ili kuanza RabbitConsumer:elixirdef start_type, _args fanya watoto RabbitConsumer opts mkakati: :one_for_one, jina: YourApp.Supervisor Supervisor.start_linkwatoto, chaguomwishoSasa hati yako ya Elixir itaunganishwa kwenye seva ya RabbitMQ, kusikiliza ujumbe kwenye foleni iliyobainishwa, kuchanganua mizigo ya JSON, kuthibitisha data, na kuingiza rekodi kwenye hifadhidata ya PostgreSQL. Hati pia inajumuisha ushughulikiaji wa hitilafu ili kurejesha uwezo wa kushindwa. 