On Thursday 02 October 2008, Joe Fernandez said: > Are your 'assignments' messages are being sent out as non persistent? If > so, then that is more than likely your problem. > > http://activemq.apache.org/why-do-i-not-receive-messages-on-my-durable-topi >c-subscription.html
They *should* be persistent, but I'll go back and make sure. > > Tom Corbin wrote: > > On Wednesday 01 October 2008, Joe Fernandez said: > >> Use care, if you've assigned the multicast uri to all the brokers' > >> network > >> and transport connectors. They'll all end up trying to connect to one > >> another. I think what you may want to consider is more of a hub-n-spoke > >> topology, where the hub is your master broker. The resulting connections > >> (spokes) in that topology would have to be 'duplex' in order to > >> accommodate > >> two-way traffic. > > > > Ok, I've got everything duplex. > > > > I'm not using multicast - I couldn't get the windows boxes to allow that. > > So the embedded brokers all connect to a central broker, in the central > > office, > > even the server processes in the central office. > > > > I don't really see a way around using the embedded brokers in the field, > > though. > > > > The messages seem to get enqueued in the embedded brokers and then not > > beyond > > that, they don't get dequeued when the client on the other end comes up. > > So > > it feels as though the subscriptions aren't being communicated or they > > arent' > > really durable or something. But I'm not sure. > > > >> conduitSubscriptions > >> -------------------- > >> This example helps explain “conduitSubscriptions”. Suppose you have two > >> brokers, A and B that are interconnected. Connected to broker A, you > >> have a > >> consumer that subscribes to a queue called Q.TEST. Connected to broker > >> B, you have two consumers that subscribe to the same queue. Then you > >> start a producer on broker A that writes 30 messages to Q.TEST. If > >> conduitSubscriptions=true, 15 messages will be sent to the consumer on > >> broker A and the resulting 15 messages will be sent to the two consumers > >> on > >> broker B. This is because broker A views the two subscriptions on broker > >> B > >> as one. If you set conduitSubscriptions to “false”, then each of the > >> three > >> consumers is given 10 messages. > > > > Wow, that really makes sense. I guess I'll leave it false. But it > > *shouldn't* make any difference since we're sending assignments out to > > the field > > on personalized topics - there should only be one consumer for the > > messages. > > > > And only the server processes should be consumers for their particular > > topics. > > > >> duplex > >> ------ > >> If true, a network connection between 2 brokers will be used to both > >> produce AND consume messages. In other words, messages can flow in > >> either direction. This is useful for hub and spoke scenarios when the > >> hub is behind a firewall or for clients implementing a request/reply > >> protocol. This is available only for ActiveMQ version 5.0 and higher. > > > > I'm using duplex = true. > > > >> dynamicOnly > >> ------------ > >> If set to true, the broker will forward messages to the endpoint broker > >> (broker at the other end of the connection) only if that endpoint broker > >> has active consumers. > > > > I've got this set to false. I had actually hoped when I read this that > > I had > > it set to true, because it would seem as though it might be the solution > > to my > > problem - but it is set to false in all 3 brokers. Well - maybe I > > should *try* it true, just to see? > > > >> Joe > >> Get a free ActiveMQ user guide @ http://www.ttmsolutions.com > >> > >> Joe Fernandez wrote: > >> > Are the 'assignments' messages being sent out as non persistent > >> > >> messages? > >> > >> > Joe > >> > Get a free ActiveMQ user guide @ http://www.ttmsolutions.com > >> > > >> > Tom Corbin wrote: > >> >> Now, it seems like the recommendation is for Master/Slave for > >> >> reliable delivery, but I don't think we can do that. > >> >> > >> >> We've got field laptops which may or may not have connectivity with > >> > >> the > >> > >> >> central > >> >> office, but they want to be able to run the application and have it > >> > >> send > >> > >> >> messages that get delivered when the network comes up. > >> >> > >> >> And the client wants the central office to be able to send > >> >> assignments to the > >> >> field whether or not the network to the field laptop is up. > >> >> > >> >> So for the field laptops I've set up an embedded broker which then > >> >> connects to > >> >> a central office broker. The reason is that the application won't > >> > >> come > >> > >> >> up if > >> >> there isn't a local broker that it can connect to. If the > >> >> application is started w/o a local broker or a connection to the > >> >> central office it doesn't come > >> >> up. Plus, I wanted the local message persistence so that the user > >> >> of the > >> >> application can trigger messages to be sent even when the connection > >> > >> to > >> > >> >> the > >> >> central office isn't present. > >> >> > >> >> In the central office we've get server processes also with embedded > >> >> brokers. > >> >> > >> >> I've been fiddling with the setup configuration for the embedded > >> > >> brokers > >> > >> >> and the > >> >> central office brokers and I've gotten to the point that messages > >> >> from the field > >> >> get sent to the central office on reconnect, but don't get sent from > >> > >> the > >> > >> >> central > >> >> office to the field on reconnect. > >> >> > >> >> And everything works if everything is connected. But if the laptop > >> >> isn't > >> >> connected to the central office when the central office sends out > >> >> assignments to > >> >> the field, then the laptop will never see those messages. > >> >> > >> >> I've tried using durable subscription topics, I've tried setting > >> >> "conduitSubscriptions" to both true and false - and I'm not sure if I > >> >> should > >> >> set it one way for the central office broker and the same or > >> >> different for the > >> >> laptop and server process embedded brokers. > >> >> > >> >> The network kind of looks like this: > >> >> > >> >> Field laptop|---------|central office broker|-----|Server Process| > >> >> > >> >> The central office broker is intended to be the "master", in as much > >> > >> as > >> > >> >> there is > >> >> a master - this isn't really a master/slave setup. > >> >> > >> >> I can use JMX to look at the enqueue/dequeue counts to see where > >> >> messages are > >> >> getting hung up - but I am not ever sure why. > >> >> > >> >> I had thought that with durable subscriptions, the messages would get > >> >> sent, > >> >> but that *seems* not to be the case. > >> >> > >> >> I have looked through ActiveMQ bug reports and the online > >> > >> documentation. > >> > >> >> Of > >> >> which there is a lot, but I am still quite confused. > >> >> > >> >> Seeing as how I'm doing the embedded broker set up in Groovy, rather > >> >> than in > >> >> spring or xbean - should I explicitly be using a > >> > >> DemandForwardingBridge > >> > >> >> as in > >> >> the ThreeBroker tests? Or does the underlying code just use it > >> > >> anyway? > >> > >> >> What would that imply for the activemq.xml config file for the master > >> >> broker? > >> >> Is there configuration that explicitly says use a > >> >> DemandForwardingBridge? Or > >> >> is the DemandForwardingBridge not the issue? > >> >> > >> >> What should these values be set to? > >> >> > >> >> decreaseNetworkConsumerPriority="false" > >> >> conduitSubscriptions="true" > >> >> bridgeTempDestinations="true" > >> >> duplex="true" > >> >> > >> >> Sorry for such a newbie set of questions and so long an email.