I have this web application that currently connects to a stand alone broker
to place messages and consumer only nodes pick up and process the messages.
I want to move this to have embedded brokers on each web app and each
consumer and those embedded brokers should forward their messages to a stand
alone broker that will sit in the middle just like it does today.

producer app server -> embedded broker -> stand alone broker -> embedded
broker -> consumer app server

This will allow messages to be produced and queued up locally without
blocking and have the messages forwarded asynchronously. As I understand the
only thing to do here is to declare the embedded brokers on both app servers
and point their network connectors to the stand alone broker. Messages are
supposed to be stored in the embedded broker and if there are subscribers to
the queue on the stand alone broker side messages will be forwarded.

So I configured my embedded brokers with these parameters (this is the same
configuration on both, consumers and producers) :

        <amq:transportConnectors>
            <amq:transportConnector uri="vm://localhost?async=true" />
        </amq:transportConnectors>

        <amq:networkConnectors>
            <amq:networkConnector
name="connection_to_nob-${activemq.brokerid}"
                                 
uri="static:failover:(tcp://broker01:61616,tcp://broker02:61616)?randomize=false&amp;maxReconnectAttempts=0"/>
        </amq:networkConnectors>

The stand alone broker of course is configured to receive connections on
61616. I start up my application and make sure with JMX all consumers and
producers are connected to the same broker (Master-slave shared file system)
and everything looks ok so far. I create some messages for queues I have
consumers for declared in the consumer side only.

I point my producer and consumer app servers to connect to vm://localhost. I
never see a single message leave the embedded broker on the producers side.
I can see with JMX the stand alone broker doesn't create the queues where my
process is placing new messages. 

As I understand from what I read I don't need to specifically create the
queues to get messages forwarded to in the stand alone broker, they're
supposed to be automatically created. I don't have anything special on my
stand alone broker other than this destination Policy which I also have on
the embedded brokers:

 <destinationPolicy>
            <policyMap>
                <policyEntries>

                    <policyEntry queue=">">
                        <deadLetterStrategy>

                            <individualDeadLetterStrategy queuePrefix="DLQ."
useQueueForQueueMessages="true" />
                        </deadLetterStrategy>
                    </policyEntry>
                </policyEntries>
            </policyMap>
        </destinationPolicy>

I'm running 5.6.0 on brokers and clients with Java 1.6.0.14 on Linux,
embedded and stand alone brokers are persistent.

Any ideas of what I am missing?



--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Store-and-Forward-with-embedded-brokers-stand-alone-broker-tp4655028.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to