<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: zeromq</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/zeromq.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2010-11-09T09:36:00+00:00</updated><author><name>Simon Willison</name></author><entry><title>Building a GeoIP server with ZeroMQ</title><link href="https://simonwillison.net/2010/Nov/9/geoip/#atom-tag" rel="alternate"/><published>2010-11-09T09:36:00+00:00</published><updated>2010-11-09T09:36:00+00:00</updated><id>https://simonwillison.net/2010/Nov/9/geoip/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://bohlander.posterous.com/building-a-geoip-server-with-zeromq"&gt;Building a GeoIP server with ZeroMQ&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
ZeroMQ makes it trivially easy to write a network service in raw C that makes functionality from a C library (in this case the MaxMind GeoIP library) available to clients written in many different client languages.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/c"&gt;c&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/geoip"&gt;geoip&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zeromq"&gt;zeromq&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;&lt;/p&gt;



</summary><category term="c"/><category term="geoip"/><category term="zeromq"/><category term="recovered"/></entry><entry><title>ZeroMQ: Modern and Fast Networking Stack</title><link href="https://simonwillison.net/2010/Sep/5/zeromq/#atom-tag" rel="alternate"/><published>2010-09-05T19:41:00+00:00</published><updated>2010-09-05T19:41:00+00:00</updated><id>https://simonwillison.net/2010/Sep/5/zeromq/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.igvita.com/2010/09/03/zeromq-modern-fast-networking-stack/"&gt;ZeroMQ: Modern and Fast Networking Stack&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I get ZeroMQ now. I was having trouble figuring out how it differed from things like RabbitMQ—it turns out it’s an entirely new low-level socket abstraction, designed to make common socket programming tasks like message sending/receiving and publish/subscribe a whole lot easier than dealing with raw BSD sockets.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/io"&gt;io&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/messaging"&gt;messaging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/networking"&gt;networking&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sockets"&gt;sockets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zeromq"&gt;zeromq&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;&lt;/p&gt;



</summary><category term="io"/><category term="messaging"/><category term="networking"/><category term="sockets"/><category term="zeromq"/><category term="recovered"/></entry><entry><title>Mongrel2 is "Self-Hosting"</title><link href="https://simonwillison.net/2010/Jun/17/mongrel2/#atom-tag" rel="alternate"/><published>2010-06-17T20:11:00+00:00</published><updated>2010-06-17T20:11:00+00:00</updated><id>https://simonwillison.net/2010/Jun/17/mongrel2/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://sheddingbikes.com/posts/1276761301.html"&gt;Mongrel2 is &amp;quot;Self-Hosting&amp;quot;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Zed Shaw’s Mongrel2 is shaping up to be a really interesting project. “A web server simply written in C that loves all languages equally”, the two most interesting new ideas are the ability to handle HTTP, Flash Sockets and WebSockets all on the same port (thanks to an extension to the Mongrel HTTP parser that can identify all three protocols) and the ability to hook Mongrel2 up to the backend servers using either TCP/IP or ZeroMQ. I’m guessing this means Mongrel2 could hold an HTTP request open, fire off some messages and wait for various backends to send messages back to construct the response, making async processing just as easy as a regular blocking request/response cycle.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/async"&gt;async&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/c"&gt;c&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/http"&gt;http&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/webserver"&gt;webserver&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/websockets"&gt;websockets&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zed-shaw"&gt;zed-shaw&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zeromq"&gt;zeromq&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/mongrel2"&gt;mongrel2&lt;/a&gt;&lt;/p&gt;



</summary><category term="async"/><category term="c"/><category term="http"/><category term="webserver"/><category term="websockets"/><category term="zed-shaw"/><category term="zeromq"/><category term="recovered"/><category term="mongrel2"/></entry><entry><title>ZeroMQ</title><link href="https://simonwillison.net/2008/Jul/27/zeromq/#atom-tag" rel="alternate"/><published>2008-07-27T16:57:23+00:00</published><updated>2008-07-27T16:57:23+00:00</updated><id>https://simonwillison.net/2008/Jul/27/zeromq/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.zeromq.org/"&gt;ZeroMQ&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Open source message queue optimised for performance: claims 25μsec latency and 2.6 million messages per second.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/message-queues"&gt;message-queues&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/messaging"&gt;messaging&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/performance"&gt;performance&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zeromq"&gt;zeromq&lt;/a&gt;&lt;/p&gt;



</summary><category term="message-queues"/><category term="messaging"/><category term="performance"/><category term="zeromq"/></entry></feed>