Hi ,<div><br></div><div><div>I developed a new amqp_client wrapper with erlang,I appreciate rabbitmq team can put the github link to the http://www.rabbitmq.com/devtools.html page ? we want to help more erlang developer to easily to use rabbitmq.</div></div><div><br></div><div>GitHub link:</div><div><a href="https://github.com/erlang-china/rabbit_farms">https://github.com/erlang-china/rabbit_farms</a><br></div><div><br></div><div>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------</div><div><br></div><div><h1 style="margin-bottom: 10px; font-weight: bold; -webkit-font-smoothing: antialiased; cursor: text; position: relative; font-size: 28px; color: rgb(0, 0, 0); font-family: Helvetica, arial, freesans, clean, sans-serif;">rabbit_farms</h1><p style="margin-bottom: 15px; color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px;">Rabbit farms is a standalone service for publishing messages to RabbitMQ from other another erlang apps.</p><h5 style="margin-top: 20px; margin-bottom: 10px; font-weight: bold; -webkit-font-smoothing: antialiased; cursor: text; position: relative; font-size: 14px; color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif; line-height: 22px;"><a name="this-is-a-beta-version" class="anchor" href="https://github.com/erlang-china/rabbit_farms#this-is-a-beta-version" style="margin-left: -30px; padding-left: 30px; color: rgb(65, 131, 196); display: block; cursor: pointer; position: absolute; top: 0px; left: 0px; bottom: 0px;"></a>This is a beta version.</h5><h3 style="margin-top: 20px; margin-bottom: 10px; font-weight: bold; font-size: 18px; -webkit-font-smoothing: antialiased; cursor: text; position: relative; color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif;"><a name="usage-scenario" class="anchor" href="https://github.com/erlang-china/rabbit_farms#usage-scenario" style="margin-left: -30px; padding-left: 30px; color: rgb(65, 131, 196); display: block; cursor: pointer; position: absolute; top: 0px; left: 0px; bottom: 0px;"></a>Usage scenario</h3><hr style="clear: both; margin: 15px 0px; height: 4px; overflow: hidden; border: 0px none; background-image: url(https://a248.e.akamai.net/assets.github.com/assets/primer/markdown/dirty-shade-bf4c1cf99dc867d1eb443f22a2647396e09b418e.png); background-color: transparent; color: rgb(204, 204, 204); padding: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; background-position: 0px 0px; background-repeat: repeat no-repeat;"><p style="margin-top: 15px; margin-bottom: 15px; color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px;">Other (external) erlang applications publish messages to RabbitMQ without needing to reference the amqp_client, using it just like the gen_server call/cast API.</p><h3 style="margin-top: 20px; margin-bottom: 10px; font-weight: bold; font-size: 18px; -webkit-font-smoothing: antialiased; cursor: text; position: relative; color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif;"><a name="usage" class="anchor" href="https://github.com/erlang-china/rabbit_farms#usage" style="margin-left: -30px; padding-left: 30px; color: rgb(65, 131, 196); display: block; cursor: pointer; position: absolute; top: 0px; left: 0px; bottom: 0px;"></a>Usage:</h3><hr style="clear: both; margin: 15px 0px; height: 4px; overflow: hidden; border: 0px none; background-image: url(https://a248.e.akamai.net/assets.github.com/assets/primer/markdown/dirty-shade-bf4c1cf99dc867d1eb443f22a2647396e09b418e.png); background-color: transparent; color: rgb(204, 204, 204); padding: 0px; font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px; background-position: 0px 0px; background-repeat: repeat no-repeat;"><p style="margin-top: 15px; margin-bottom: 15px; color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px;">Configure the&nbsp;<code style="margin-right: 2px; margin-left: 2px; padding-right: 5px; padding-left: 5px; border: 1px solid rgb(234, 234, 234); font-size: 12px; font-family: Consolas, 'Liberation Mono', Courier, monospace; background-color: rgb(248, 248, 248); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; white-space: nowrap;">rabbit_famrs.app</code></p><div class="highlight" style="color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px;"><pre style="margin-top: 15px; margin-bottom: 15px; padding: 6px 10px; border: 1px solid rgb(204, 204, 204); font-size: 13px; font-family: Consolas, 'Liberation Mono', Courier, monospace; background-color: rgb(248, 248, 248); line-height: 19px; overflow: auto; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;">    <span class="p">{</span><span class="n">env</span><span class="p">,</span> <span class="p">[{</span><span class="n">rabbit_farms</span><span class="p">,[</span><span class="n">tracking</span><span class="p">]},</span>
             <span class="p">{</span><span class="n">farm_tracking</span><span class="p">,[{</span><span class="n">username</span><span class="p">,</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"guest"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">},</span>
                                     <span class="p">{</span><span class="n">password</span><span class="p">,</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"V2pOV2JHTXpVVDA9"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">},</span> <span class="c" style="color: rgb(153, 153, 136); font-style: italic;">%% triple_times_base64("guest")</span>
                                     <span class="p">{</span><span class="n">virtual_host</span><span class="p">,</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"/"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">},</span>
                                     <span class="p">{</span><span class="n">host</span><span class="p">,</span> <span class="s" style="color: rgb(221, 17, 68);">"localhost"</span><span class="p">},</span>
                                     <span class="p">{</span><span class="n">port</span><span class="p">,</span> <span class="mi" style="color: rgb(0, 153, 153);">5672</span><span class="p">},</span>
                           <span class="p">{</span><span class="n">feeders</span><span class="p">,[</span>
                                      <span class="p">[{</span><span class="n">channel_count</span><span class="p">,</span><span class="mi" style="color: rgb(0, 153, 153);">1</span><span class="p">},</span>
                                       <span class="p">{</span><span class="n">exchange</span><span class="p">,</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"tracking.logs"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">},</span>
                                       <span class="p">{</span><span class="n">type</span><span class="p">,</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"topic"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">}]</span>
                                    <span class="p">]}</span>
                           <span class="p">]}</span>
    <span class="p">]}</span>
</pre></div><h4 style="margin-top: 20px; margin-bottom: 10px; font-weight: bold; -webkit-font-smoothing: antialiased; cursor: text; position: relative; color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif;"><a name="publish" class="anchor" href="https://github.com/erlang-china/rabbit_farms#publish" style="margin-left: -30px; padding-left: 30px; color: rgb(65, 131, 196); display: block; cursor: pointer; position: absolute; top: 0px; left: 0px; bottom: 0px;"></a>publish</h4><div class="highlight" style="color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px;"><pre style="margin-top: 15px; margin-bottom: 15px; padding: 6px 10px; border: 1px solid rgb(204, 204, 204); font-size: 13px; font-family: Consolas, 'Liberation Mono', Courier, monospace; background-color: rgb(248, 248, 248); line-height: 19px; overflow: auto; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;">    <span class="mi" style="color: rgb(0, 153, 153);">1</span><span class="o" style="font-weight: bold;">&gt;</span><span class="nv" style="color: rgb(0, 128, 128);">RabbitCarrot</span> <span class="o" style="font-weight: bold;">=</span> <span class="nl">#rabbit_carrot</span><span class="p">{</span><span class="n">farm_name</span> <span class="o" style="font-weight: bold;">=</span> <span class="n">tracking</span><span class="p">,</span> <span class="n">exchange</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"tracking.logs"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span> 
                     <span class="n">routing_key</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"routing_key"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span> 
                     <span class="n">message</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">""</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">}.</span>
      <span class="nl">#rabbit_carrot</span><span class="p">{</span><span class="n">farm_name</span> <span class="o" style="font-weight: bold;">=</span> <span class="n">tracking</span><span class="p">,</span>
               <span class="n">exchange</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"tracking.logs"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span>
               <span class="n">routing_key</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"routing_key"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span><span class="n">message</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;&gt;&gt;</span><span class="p">,</span>
               <span class="n">content_type</span> <span class="o" style="font-weight: bold;">=</span> <span class="n">undefined</span><span class="p">}</span>

    <span class="mi" style="color: rgb(0, 153, 153);">2</span><span class="o" style="font-weight: bold;">&gt;</span><span class="nn" style="color: rgb(85, 85, 85);">rabbit_farms</span><span class="p">:</span><span class="nf" style="color: rgb(153, 0, 0); font-weight: bold;">publish</span><span class="p">(</span><span class="n">cast</span><span class="p">,</span> <span class="nv" style="color: rgb(0, 128, 128);">RabbitCarrot</span><span class="p">).</span> <span class="c" style="color: rgb(153, 153, 136); font-style: italic;">%%asynchronous</span>
    <span class="mi" style="color: rgb(0, 153, 153);">3</span><span class="o" style="font-weight: bold;">&gt;</span><span class="nn" style="color: rgb(85, 85, 85);">rabbit_farms</span><span class="p">:</span><span class="nf" style="color: rgb(153, 0, 0); font-weight: bold;">publish</span><span class="p">(</span><span class="n">call</span><span class="p">,</span> <span class="nv" style="color: rgb(0, 128, 128);">RabbitCarrot</span><span class="p">).</span> <span class="c" style="color: rgb(153, 153, 136); font-style: italic;">%%synchronization</span>
</pre></div><h4 style="margin-top: 20px; margin-bottom: 10px; font-weight: bold; -webkit-font-smoothing: antialiased; cursor: text; position: relative; color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif;"><a name="batch-publish" class="anchor" href="https://github.com/erlang-china/rabbit_farms#batch-publish" style="margin-left: -30px; padding-left: 30px; color: rgb(65, 131, 196); display: block; cursor: pointer; position: absolute; top: 0px; left: 0px; bottom: 0px;"></a>batch publish</h4><div class="highlight" style="color: rgb(51, 51, 51); font-family: Helvetica, arial, freesans, clean, sans-serif; font-size: 14px; line-height: 22px;"><pre style="margin-top: 15px; margin-bottom: 15px; padding: 6px 10px; border: 1px solid rgb(204, 204, 204); font-size: 13px; font-family: Consolas, 'Liberation Mono', Courier, monospace; background-color: rgb(248, 248, 248); line-height: 19px; overflow: auto; border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;">    <span class="mi" style="color: rgb(0, 153, 153);">1</span><span class="o" style="font-weight: bold;">&gt;</span><span class="nv" style="color: rgb(0, 128, 128);">Body1</span> <span class="o" style="font-weight: bold;">=</span> <span class="nl">#rabbit_carrot_body</span><span class="p">{</span><span class="n">routing_key</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"routing_key"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span> <span class="n">message</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"message1"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">}.</span>
      <span class="nl">#rabbit_carrot_body</span><span class="p">{</span><span class="n">routing_key</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"routing_key1"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span>
                    <span class="n">message</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"message1"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">}</span>

    <span class="mi" style="color: rgb(0, 153, 153);">2</span><span class="o" style="font-weight: bold;">&gt;</span><span class="nv" style="color: rgb(0, 128, 128);">Body2</span> <span class="o" style="font-weight: bold;">=</span> <span class="nl">#rabbit_carrot_body</span><span class="p">{</span><span class="n">routing_key</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"routing_key"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span> <span class="n">message</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"message2"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">}.</span>
      <span class="nl">#rabbit_carrot_body</span><span class="p">{</span><span class="n">routing_key</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"routing_key2"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span>
                    <span class="n">message</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"message2"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">}</span>

    <span class="mi" style="color: rgb(0, 153, 153);">3</span><span class="o" style="font-weight: bold;">&gt;</span><span class="nv" style="color: rgb(0, 128, 128);">RabbitCarrots</span> <span class="o" style="font-weight: bold;">=</span> <span class="nl">#rabbit_carrots</span><span class="p">{</span><span class="n">farm_name</span>            <span class="o" style="font-weight: bold;">=</span> <span class="n">tracking</span><span class="p">,</span>
                                      <span class="n">exchange</span>             <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"tracking.logs"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span> 
                                      <span class="n">rabbit_carrot_bodies</span> <span class="o" style="font-weight: bold;">=</span> <span class="p">[</span><span class="nv" style="color: rgb(0, 128, 128);">Body1</span><span class="p">,</span><span class="nv" style="color: rgb(0, 128, 128);">Body2</span><span class="p">]}.</span>

      <span class="nl">#rabbit_carrots</span><span class="p">{</span>
                        <span class="n">farm_name</span> <span class="o" style="font-weight: bold;">=</span> <span class="n">tracking</span><span class="p">,</span><span class="n">exchange</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"tracking.logs"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span>
                        <span class="n">rabbit_carrot_bodies</span> <span class="o" style="font-weight: bold;">=</span> 
                            <span class="p">[</span><span class="nl">#rabbit_carrot_body</span><span class="p">{</span>
                                 <span class="n">routing_key</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"routing_key"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span>
                                 <span class="n">message</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"message1"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">},</span>
                             <span class="nl">#rabbit_carrot_body</span><span class="p">{</span>
                                 <span class="n">routing_key</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"routing_key"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">,</span>
                                 <span class="n">message</span> <span class="o" style="font-weight: bold;">=</span> <span class="o" style="font-weight: bold;">&lt;&lt;</span><span class="s" style="color: rgb(221, 17, 68);">"message2"</span><span class="o" style="font-weight: bold;">&gt;&gt;</span><span class="p">}],</span>
                        <span class="n">content_type</span> <span class="o" style="font-weight: bold;">=</span> <span class="n">undefined</span><span class="p">}</span>

    <span class="mi" style="color: rgb(0, 153, 153);">4</span><span class="o" style="font-weight: bold;">&gt;</span><span class="nn" style="color: rgb(85, 85, 85);">rabbit_farms</span><span class="p">:</span><span class="nf" style="color: rgb(153, 0, 0); font-weight: bold;">publish</span><span class="p">(</span><span class="n">cast</span><span class="p">,</span> <span class="nv" style="color: rgb(0, 128, 128);">RabbitCarrots</span><span class="p">).</span> <span class="c" style="color: rgb(153, 153, 136); font-style: italic;">%%asynchronous</span>
    <span class="mi" style="color: rgb(0, 153, 153);">5</span><span class="o" style="font-weight: bold;">&gt;</span><span class="nn" style="color: rgb(85, 85, 85);">rabbit_farms</span><span class="p">:</span><span class="nf" style="color: rgb(153, 0, 0); font-weight: bold;">publish</span><span class="p">(</span><span class="n">call</span><span class="p">,</span> <span class="nv" style="color: rgb(0, 128, 128);">RabbitCarrots</span><span class="p">).</span> <span class="c" style="color: rgb(153, 153, 136); font-style: italic;">%%synchronization</span></pre></div></div><div><br></div><div><br></div><div>Thanks</div><div>Xujin Zheng</div><div><br></div>