<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Thanks for the excellent thoughts here! :) Comments below...<div><br><div><div>On Sep 7, 2010, at 2:02 PM, darrencruse wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>a. &nbsp;Are you familiar with the new NKP protocol? &nbsp;Sounds like you should at<br>least take a look if not - it's very much about cloud computing using<br>NetKernel. &nbsp;They've built a high speed protocol using Apache Etch for<br>allowing multiple NetKernel's to work together. &nbsp;<br><br><a href="https://cwiki.apache.org/ETCH/home.html">https://cwiki.apache.org/ETCH/home.html</a><br><br>And they're latest downloads include an example doing a pub/sub model using<br>NetKernel with the NKP Protocol.<br></div></blockquote><div><br></div><div>This sounds very good, indeed! I'll be investigating this more right away.</div><br><blockquote type="cite"><div>b. &nbsp;But what you said about looking at the JMS source as a reference for<br>your RabbitMQ Transport was what I was going to suggest you beat me to it.<br>:)<br></div></blockquote><div><br></div>Haven't actually written any code on this yet. Too many other things demanding my attention.&nbsp;</div><div><br></div><div>I'm reworking my cloud job scheduler using Spring AMQP right now, so it might actually be a perfect time to revisit this in earnest and see if I can make something work. If you have a need for something similar, I love to collaborate. :)</div><div><br><blockquote type="cite"><div>c. &nbsp;I didn't know enough to know is there definitely not a JMS Provider for<br>RabbitMQ (probably a dumb question from a brief google it sounds like maybe<br>there's not). &nbsp;If there was I wondering if in fact you could just use<br>NetKernel's JMS Transport with RabbitMQ.<br></div></blockquote><div><br></div>IMHO it's just as well there isn't a JMS provider for RabbitMQ. ;)</div><div><br></div><div>I like AMQP because it's truly cross-platform. I can write producers in Python and consumers in Java. Or Ruby. Or Erlang. :)&nbsp;</div><div><br><blockquote type="cite"><div>d. &nbsp;From your arch drawing I was surprised you were talking about Scala<br>Actors - why wouldn't you just run NetKernel on both JVMs? &nbsp;i.e. The<br>single-within-a JVM scala actor model seems redundant with NetKernel's<br>dymamic request resolution between endpoints within a single NetKernel, and<br>distributed actors likewise seem redundant with using your RabbitMQ<br>Transport and possibly using asynchronous requests. &nbsp;It seems to me the real<br>beauty whether using NetKernel or actors would be the elegance of choosing<br>one approach and using that consistently throughout the architecture - it<br>wasn't clear to me why you'd want to mix both. &nbsp;But I'm probably just not<br>following what you were after - are you integrating existing systems this<br>way that already use scala actors or something?<br></div></blockquote><div><br></div><div>I guess that's a little confusing because I don't fully know what I want! :)&nbsp;</div><div><br></div><div>The thing that prompted my looking into NetKernel was the frustration with having multiple copies of all the connections, channels, consumers, etc... in a Tomcat session manager I wrote for private clouds. Since I run multiple instances of Tomcat/tcServer per virtual machine (VMware virtual machine in this case), it seemed silly to me to be running, on a single "box", several instances of my session manager (one for each webapp) times the number of tcServer instances I'm running (usually 3) when all I need on that Linux box is a single manager for messages and a single cache that can service multiple tcServer instances without all the resource usage involved in duplicating everything. The better use I can make of those small VMs, the more traffic I can funnel through them. I need a way to communicate from a client in a session manager running in a Tomcat VM to the AMQP manager that's doing the message sending and session object mangling. Scala actors seemed to make sense here because they're friendly to the kind of cloud-scale distributed computing I'm trying to do but are still Java compatible. I wasn't sure I could get the same kind of ease of component communication by embedding NetKernel inside each Tomcat (again, I was concerned about unnecessary duplication of resources, whether it's NetKernel or RabbitMQ client stuff) considering a session manager is instantiated per webapp.</div><br><blockquote type="cite"><div>e. &nbsp;Likewise I noticed you highlighted the use of cron on the one box, but<br>NetKernel has nice cron like capabilites based on quartz. &nbsp;So again it seems<br>like there'd be more synergy by using NetKernel for those needs too(?)<br></div></blockquote><div><br></div>I'd prefer quartz, actually. I'd gladly stay within the context of NetKernel if I could.&nbsp;</div><div><br></div><div>In general I use the term "cron" to refer to a scheduled, recurring job of some kind rather than the UNIX "cron" specifically. :)</div><div><br><blockquote type="cite"><div>Just some thoughts fwiw (again I'm not a RabbitMQ expert and I didn't look<br>closely at your thread so I may be missing some things in what you're<br>after),<br></div></blockquote></div><div><br></div>I really appreciate your thoughts! :)&nbsp;You've inspired me to get back in there and check out the NKP stuff and see if that will be a good fit. I've kind of hit a brick wall on another project I'm working on, so I think I'll get back into the job scheduler code today.</div><div><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Palatino; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Times; font-size: 14px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; "><br class="Apple-interchange-newline">Thanks!</span></font></div><div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; "><br></span></font></div><div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; ">J. Brisbin</span></font></div><div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; "><a href="http://jbrisbin.com/">http://jbrisbin.com/</a></span></font></div><div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; "><br></span></font></div><div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; "><br></span></font></div></div><font class="Apple-style-span" face="Palatino" size="4"><span class="Apple-style-span" style="font-size: 14px; "><br></span></font></div></span><br class="Apple-interchange-newline"></span><br class="Apple-interchange-newline"></span>
</div>
<br></div></body></html>