Alexis Richardson | 29 Jun 2009 22:30
Picon

recent and upcoming RabbitMQ / txAMQP talks

Hi all,

This is a short note to announce that Esteve Fernandez, author of the
txAMQP client for Python/Twisted, will give a talk at 4pm on Friday
July 3rd at RabbitHQ in London.  Please come along and join us for a
beer afterwards.  If you want to come, please email me so that I can
get a rough idea of numbers.

Last week there were several RabbitMQ-related talks at the Erlang
Factory that were filmed.  Keep an eye out for videos about the
following:

* Heroku mixing Ruby with Erlang and using some RabbitMQ
* A short intro talk from me with some use cases
* Matthew's talk about adding page-to-disk to RabbitMQ - with code and
commentary on Erlang
* Tony's talk on RabbitHub web messaging with Rabbit+webhooks
* Sean O'Halpin on the BBC's use of RabbitMQ, ejabberd and CouchDB

All the best,

alexis
Alexis Richardson | 29 Jun 2009 23:19
Picon

Re: RabbitMQ/Spring integration - help required

Vivek

Have you been able to resolve this issue?

alexis

On Thu, Jun 25, 2009 at 4:18 PM, Vivek Ramesh.
Kubaji<vivek.kubaji@...> wrote:
> Hi,
>
>
>
> I'm trying to evaluate RabbitMQ for our project. And I'm using
> Spring-integration framework. From the posts in the forum I ended up using
> the following configuration (jms part):
>
>
>
>       <beans:bean id="amqConnectionFactory"
>
> class="org.apache.qpid.client.AMQConnectionFactory">
>
>             <beans:constructor-arg
>
> value="amqp://guest:guest <at> /localhost?brokerlist='tcp://localhost:5672'" />
>
>       </beans:bean>
>
>
>
(Continue reading)

Alexis Richardson | 29 Jun 2009 23:44
Picon

Re: Declare queue on specific node

Daniel

I am not sure if this will completely answer your question but ...

http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003359.html

"The node to which a client is connected when it
issues a queue.declare that creates a new queue is the node that the
created queue is situated on until it's deleted and recreated."

Re HA ... it's doable in various ways.  A short video about this and
federation is here:

http://skillsmatter.com/podcast/cloud-grid/rabbitmq-internal-architecture-tony-garnock-jones

Please *do* tell us more about your problem if the above does not
help.  Your approach is sound but managing it optimally over time may
require more info about your use case.

Best wishes

alexis

On Mon, Jun 29, 2009 at 1:02 PM, Daniel Lundin<dln@...> wrote:
> Still designing something workable for high availability over here. A
> workable solution would be to bind multiple queues on different nodes to
> the same exchange, hence assuring persistence on multiple locations
> while maintaining availability.
>
> This would suffice quite well for my case.
(Continue reading)

Tony Garnock-Jones | 30 Jun 2009 09:10
Favicon

Re: Max OS X failure on start up / Trivial

Matthias Radestock wrote:
> So I recommend searching the system for any remnants of other rabbitmq 
> installations, in particular rabbit_*.beam files, and remove them.

Good point. I just used Spotlight to search for "rabbit.beam" and found 
four separate instances. (All of which were, in my case, expected, but 
nonetheless it's a valuable troubleshooting hint...)

Tony
Tony Garnock-Jones | 30 Jun 2009 09:16
Favicon

Re: RabbitMQ/Spring integration - help required

Hi Vivek,

krv wrote:
> amqp://guest:guest <at> /localhost?brokerlist='tcp://localhost:5672'

Based on a cursory study of 
http://qpid.apache.org/connection-url-format.html, could it be the case 
that you want the following instead?

amqp://guest:guest <at> /?brokerlist='tcp://localhost:5672'

RabbitMQ ships with these default settings:

  - username "guest"
  - password "guest"
  - virtual-host "/" (not "/localhost")

Regards,
   Tony
Tony Garnock-Jones | 30 Jun 2009 09:33
Favicon

Re: Multithreaded application, separation of connections and channels

Hi Matthias,

Matthias Karlsson wrote:
> 1) Each thread has its own connection from which it creates one channel
> 2) One connection is shared for the whole application, multiple
> channels are created and given to threads
> 3) A hybrid variant where X channels is created from every connection,
> and depending on the number of threads, a number of connections are
> created

Unless you have a very high number of threads and/or separate VMs, your 
option (1) seems easiest to work with. Suitably abstracted, it can 
always be switched out for one of the others later.

The main differences are in terms of error handling: who is affected by 
a dropped connection. If multiple channels share a connection, a bug in 
a thread using one channel can disturb the clean operation of other 
channels. (Partly because AMQP 0-8's error design is not as clean as it 
could be, and accidentally specifies connection-level errors in some 
cases where a channel-level error was clearly a better idea.)

> The application needs to be fail-safe and be able to restablish
> connections to the broker in case of network problems, broker goes
> down etc.

Many people have this need. It'd be great if you could share the design 
(or even the implementation!) of what you come up with for this; our 
java library is very much a thin layer atop the protocol, and could 
definitely stand to grow some affordances for the developer.

(Continue reading)

Tony Garnock-Jones | 30 Jun 2009 09:37
Favicon

Re: .Net 2.0 and HTTPS as a client

Hi Ken,

Anderson, Ken wrote:
>  RabbitMQ was on our short list because it has advertised the ability 
> for .Net access and HTTPS transports.
> Is anyone doing this?  Are there any gotchas?

The only gotcha I can think of is that there are apparently some issues 
with certificate validation under Mono. If you're using MS .NET, it 
should be fine.

Improved (i.e. built-in) SSL support for RabbitMQ is *this close* to 
landing in default, AIUI, meaning that stunnel will be able to be dropped.

Regards,
   Tony
Tony Garnock-Jones | 30 Jun 2009 09:45
Favicon

Re: Many clients using .NET API

Hi Sam,

Sam Owen wrote:
> I’ve just started to look at RabbitMQ. I’m wondering whether the 
> following would be an idiomatic use of RabbitMQ from the .NET API:
> 
> Routing.Listen("queue1", "#", new ConsoleAlert());
> Routing.Listen("queue1", "news.#", new EmailAlert());
> Routing.Listen("queue2", "email.#", new ConsoleAlert());

Are you suggesting a layer atop IModel?

> Each call to Listen sets up a thread where the connection and channel 
> are maintained.

That makes sense -- especially if it could abstract away the three 
options for multiplexing channels over connections that Matthias 
Karlsson mentioned in 
<83eb635f0906250159u1c700aa6r94f0e124119393a0@...>.

Ah, I see by your implementation that you *are* suggesting a layer atop 
IModel! It looks, at a glance, plausible, but I'm afraid I'm not the man 
to at-a-glance evaluate the code more closely than that :-)

> Given that .NET processes are more heavy weight than erlang’s is this 
> the preferred way to set up many clients?

Hmm. Well, in Java there's a thread or so* per connection too, so it's 
not an awful way of doing it. On the other hand, if your error-handling 
model supports it, you could share a single channel between multiple 
(Continue reading)

Tony Garnock-Jones | 30 Jun 2009 09:56
Favicon

Re: BrokerUnreachableException on .NET client

Matthias Radestock wrote:
> That is almost certainly caused by an operating system limit; there are 
> no limits in the client code. Try increasing the OS limits. No idea how 
> that's done on OSX but it shouldn't be hard.

bash$ help ulimit

, and

$ # POSIX C API for the same
$ man getrlimit
$ man setrlimit

Tony
Michael Nacos | 30 Jun 2009 10:31
Picon

tcp -> rabbitmq gives emfile + 541

Hi all and thank you for the Erlang Factory talks

I have tried to implement a very basic erlang tcp server which accepts requests and forwards everything to rabbitmq exchanges. This is meant to be a workaround the lack of a 0.8 C client, I am trying to get Postgresql to send notifications through rabbitmq. Things work as expected up to a point, until I get

{{badmatch,{error,emfile}},[{cinumber_daemon,connect,1}]}

followed by

Broker forced connection: 541 -> <<"INTERNAL_ERROR">>

I am pretty much an Erlang newbie, so please forgive me if this is not really a rabbitmq issue. This could be useful to others, too.

cheers, Michael

Here is the relevant part of the code (I am certain recv_loop terminates):
recv_loop also does all the rabbity stuff (closes channel, closes connection)

--------------------------------------------------------------------------------------------------

start_server() ->
    % start up the service and error out if we cannot
    case gen_tcp:listen(?LISTEN_PORT, ?TCP_OPTS) of
        {ok, Listen} ->
            spawn(?MODULE, connect, [Listen]),
            io:format("~p Server Started.~n", [erlang:localtime()]),
            sleep(infinity);
        Error ->
            io:format("Error: ~p~n", [Error])
    end.

connect(Listen) ->
    {ok, Socket} = gen_tcp:accept(Listen),
    inet:setopts(Socket, ?TCP_OPTS),
    % kick off another process to handle connections concurrently
    spawn(fun() -> connect(Listen) end),
    recv_loop(Socket),
    gen_tcp:close(Socket),
    exit(normal).

_______________________________________________
rabbitmq-discuss mailing list
rabbitmq-discuss@...
http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss

Gmane