<div class="gmail_quote">On Thu, Jan 3, 2013 at 6:08 AM, Martin Sustrik <span dir="ltr">&lt;<a href="mailto:sustrik@250bpm.com" target="_blank">sustrik@250bpm.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Murray,<br>
<br>
On 28/12/12 22:24, Murray Williams wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I&#39;m trying to build some glue between a system that uses a low-level ØMQ<br>
implementation and some Enterprise (J2EE for the moment) frameworks, and<br>
I got excited when I read the blog about the RabbitMQ-ØMQ plugin.<br>
Unfortunately, that plugin seems to depend on the older Erlang-ØMQ<br>
(erlzmq) bindings instead of the newer erlzmq2 bindings, and the older<br>
bindings don&#39;t compile against my recent version of Erlang (&quot;Driver<br>
compiled with incorrect version of erl_driver.h&quot;) so I&#39;m stuck, unless I<br>
want to downgrade my system&#39;s Erlang version, but even if I did that,<br>
this would give me a very brittle solution.<br>
</blockquote>
<br>
Here&#39;s Martin Sustrik, one of the original authors or RMQ/0MQ plug-in.<br>
<br>
I don&#39;t have time to look into the plugin at the moment, however, if you have any specific questions about it feel free to ask.<span class="HOEnZb"><font color="#888888"><br>
<br>
Martin<br>
</font></span></blockquote></div><br><div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">Ah hello! Excellent!</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">In fact, I&#39;ve been working pretty hard at seeing if I could bring that code up to date. (And, in the process, I&#39;m reading <i>Erlang and OTP in Action!</i> so I&#39;m not completely in the dark here.) I started by creating a brand new RabbitMQ plugin—using the rabbitmq-metronome as an example, since I&#39;m guessing/hoping it follows the most current plugin conventions for RabbitmQ 3.x. I created each module from scratch and copied your original functions one-by-one so I could examine them and catch-and-change the older zmq: calls and update them to the newer Erlzmq2 APIs. (That&#39;s not very hard. The biggest change is that you have to create a &quot;context&quot; and pass it to the calls that create ØMQ sockets. Also, &quot;upstream&quot; and &quot;downstream&quot; names were changed to &quot;push&quot; and &quot;pull&quot;.)</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
Everything compiles, and I can install and enable the plugin, but right now it looks like the supervisor keeps shutting down for some reason that I can&#39;t quite figure out yet. Part of it is just that I don&#39;t quite understand the various init and start_link conventions for gen_server—that will come in due time. The other thing is that I don&#39;t know how the configuration information information makes it to the supervisor. I thought it was being passed as the arguments in the application&#39;s start/2 call, but that looks like it&#39;s being called with an empty list. (Maybe that&#39;s how things worked with the older versions of RabbitMQ? It&#39;s hard to know since there isn&#39;t much plugin documentation out there.)</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
Looking at rabbitmq-stomp, I&#39;m guessing that actually entries in the rabbit.config are supposed to update/replace elements in the .app.src file&#39;s {env, []} element, and that I need to write code to extract all that stuff from the environment. I was going to tackle playing with that today.</div>
<div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"><br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
Does any of the above make sense? If you have any pieces of advice, I&#39;d love to hear any pointers. Also, I&#39;ll get everything I&#39;ve done up on my github fork soon.</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">Thanks,</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">Murray</div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<br></div><div style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">P.S. Being new to Erlang, I&#39;m completely confused when I look at r0mq_sup&#39;s full_address(Address) functions. Hopefully it&#39;ll just work in place, but I would love it if you could just tell me what exactly it&#39;s trying to validate, especially the part where the io_lib:char_list(Address) test fails. Is that suggesting that the ipv4 address is in a packed (4-byte) representation as opposed to being written out in ascii characters? </div>
</div>