forwarding wrongly targeted message to users list. -- Kalle
Forwarded message: > From: Kalle <[email protected]> > To: Gordon Sim <[email protected]> > Date: Tuesday 3. January 2012 14.26.38 > Subject: Re: Messaging scenarios > > > Thanks for all the answers so far! > > Here is some of my code (edited for clarity, sorry that it will not compile > though). The situation has evolved, I now try to achieve the queue > definitions is application code. > > > String qpid = "amqp..."; > AMQConnectionFactory connectionFactory = new AMQConnectionFactory(qpid); > AMQConnection connection = (AMQConnection) > connectionFactory.createConnection(); > connection.start(); > AMQSession_0_10 session = > connection.createSession(TRANSACTIONS,Session.CLIENT_ACKNOWLEDGE, 1)); > > AMQBindingURL url = new AMQBindingURL("topic://configuration/server1?" + > exclusive='false'&qpid.last_value_queue='true'&qpid.last_value_queue_key='configuration'"); > > Topic config = new AMQTopic(url); > > MessageConsumer configconsumer = this.session.createSubscriber(config); > > Message configMessage = configconsumer.receive(1000L); > > if (configMessage == null) { > LOGGER.info("Configuration was not found in QPID, seeding default"); > > > .. create configuration object .. > > > BytesMessage m = this.session.createBytesMessage(); > m.setStringProperty("configuration", "server1"); > m.writeBytes(configuration.toByteArray()); > MessageProducer configproducer = this.session.createPublisher(config); > configproducer.send(m, DeliveryMode.PERSISTENT, Message.DEFAULT_PRIORITY, 0L); > Thread.sleep(100L); > configproducer.close(); > } > > > So I'm trying to use the AMQP API instead of JMS (although it seems an unholy > combination of both in the end). > > > At the moment this does not work; if I run it twice, both applications log > 'configuration not found'. > > > On Tuesday 3. January 2012 at 13.28, Gordon Sim wrote: > > As Bruno pointed out, you need to ensure the messages are also marked > > durable. > > > > > > > > I assume I can achieve this by sending it with persistent delivery mode? > > Also, in passing, it seems redundant to have a ring queue of 1 message > > and set the LVQ option. If there is only ever one message on the queue > > the LVQ matching will never be needed (each message will simply replace > > the existing one, regardless of the key). > > > > > > > > Agreed. I think in the future I would have multiple different configuration > objects, thus not needing either ring or size definitions. The idea is to > have an exchange: > > topic://configurations/ > > with multiple underlying topics > > topic://configuration/server1 > topic://configuration/server2/service1 > > et cetera. In this scenario LVQ may make more sense? > > > > There is no pub-queue, there is (in AMQP 0-10) an 'exchange' to which > > the temporary queues are all bound. Publishers send message to this > > exchange and all queues with a matching binding receive a copy of it. > > > > > > > > In BindingURL this would mean a binding parameter with the topic name? > > > > Thanks! > > -- > Kalle. >
