not a lot seems to work. 8 identical messages sent to the broker in quick succession. Three arrived, 5 just disappeared. It's complicated by the fact MessageAuthorizationPolicy::isAllowedToConsume never seems to be called for the original message, so I can't really verify whether the message disappeared once inside activemq. isAllowedToConsume is only called when the message is routed by camel to the next topic:
message -> topicA -> camel -> topicB isAllowedToConsume is never called for topicA isAllowedToConsume is called for topicB with a destination of topic://topicB Alistair -- mov eax,1 mov ebx,0 int 80h On 26 Sep 2011, at 16:19, Alistair Young wrote: > trying to log incoming messages at the broker to narrow the problem and > another problem appears. This works on one server but adds 0x0 chars on > another so the message fails to parse: > > public boolean isAllowedToConsume(ConnectionContext context, Message message) > { > > new String(message.getContent().data, message.getContent().offset, > message.getContent().length) > > so on one server the offset and length are wrong as it seems to report too > many chars > > Alistair > > -- > mov eax,1 > mov ebx,0 > int 80h > > > > > On 22 Sep 2011, at 12:05, Gary Tully wrote: > >> Is this code shared by multiple threads? does it need synchronization? >> >> What you are experiencing does seem odd, it would be great if you >> could provide a simple junit test case that can reproduce. >> >> Also, peeking that the code of the logging plugin, it should be >> logging sends, that is again odd: >> http://svn.apache.org/viewvc/activemq/tags/activemq-5.5.0/activemq-core/src/main/java/org/apache/activemq/broker/util/LoggingBrokerPlugin.java?view=markup >> >> On 22 September 2011 10:59, Alistair Young <alistair.yo...@uhi.ac.uk> wrote: >>> would someone be kind enough to have a quick look at this code to see if it >>> could cause problems? The method returns a reusable connection so the user >>> of the class doesn't have to connect/disconnect on every message. The first >>> message never fails, it's always when reusing the connection that random >>> messages disappear. >>> >>> thanks, >>> >>> Alistair >>> >>> try { >>> // Try to reuse a previous connection >>> if (previousMxConnection == null) { >>> ActiveMQConnectionFactory connectionFactory = new >>> ActiveMQConnectionFactory(brokerURL); >>> connection = connectionFactory.createConnection(); >>> connection.setClientID(clientId); >>> connection.start(); >>> session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); >>> destination = session.createTopic(topicName); >>> producer = session.createProducer(destination); >>> producer.setDeliveryMode(messageMode); >>> >>> mxConnection = new MatrixConnection(); >>> mxConnection.connection = connection; >>> mxConnection.session = session; >>> mxConnection.destination = destination; >>> mxConnection.producer = producer; >>> } >>> else { >>> session = previousMxConnection.session; >>> if (previousMxConnection.producer == null) { >>> producer = session.createProducer(previousMxConnection.destination); >>> producer.setDeliveryMode(DeliveryMode.PERSISTENT); >>> previousMxConnection.producer = producer; >>> } >>> else { >>> producer = previousMxConnection.producer; >>> } >>> mxConnection = previousMxConnection; >>> } >>> >>> TextMessage message = session.createTextMessage(messageText); >>> producer.send(message); >>> >>> return mxConnection; >>> } >>> catch(Exception e) { >>> throw new MatrixClientException(e); >>> } >>> } >>> >>> >>> -- >>> mov eax,1 >>> mov ebx,0 >>> int 80h >>> >>> >>> >>> >>> On 22 Sep 2011, at 10:50, Alistair Young wrote: >>> >>>> nothing seems to help. There are still messages just disappearing. Also >>>> the logging doesn't seem to log anything to do with producers: >>>> >>>> <loggingBrokerPlugin logAll="true" logConnectionEvents="true" /> >>>> >>>> I can see lots of camel consumers from the local machine looking at the >>>> routes but nothing about incoming messages from producers. >>>> >>>> Alistair >>>> >>>> -- >>>> mov eax,1 >>>> mov ebx,0 >>>> int 80h >>>> >>>> >>>> >>>> >>>> On 21 Sep 2011, at 13:13, Alistair Young wrote: >>>> >>>>> I'm running ActiveMQ 5.5.0 as a spring webapp rather than the standalone >>>>> version. Would you recommend the standalone one? Not sure how to use >>>>> camel with that though. >>>>> >>>>> there's quite a high rate of packet loss on the network it seems and >>>>> according to this: >>>>> http://activemq.apache.org/async-sends.html >>>>> the default is sync send for persistent messages outside transactions. >>>>> I'm using transactions on the broker but not the producer to preserve >>>>> camel routes across restarts. So I presume the producer is using sync >>>>> mode to send the messages as they are persistent. However, no error from >>>>> the broker and no message arriving might hint at async mode falling foul >>>>> of packet loss perhaps? >>>>> >>>>> I'll try this on the broker connection to see if it helps: >>>>> >>>>> jms.useAsyncSend=false >>>>> >>>>> Alistair >>>>> >>>>> >>>>> -- >>>>> mov eax,1 >>>>> mov ebx,0 >>>>> int 80h >>>>> >>>>> >>>>> >>>>> >>>>> On 21 Sep 2011, at 13:02, Torsten Mielke wrote: >>>>> >>>>>> What is the exact broker version used on your side? >>>>>> In case its not the latest released version, can you try the latest >>>>>> version? >>>>>> >>>>>> Do you set any particular headers on the Topic message in your producer? >>>>>> >>>>>> >>>>>> >>>>>> On Sep 21, 2011, at 1:54 PM, Alistair Young wrote: >>>>>> >>>>>>> I can't explain this at all. It's almost like the opposite of reliable >>>>>>> messaging. At times, almost 1 in 3 messages just disappears. No errors. >>>>>>> The KahaDB/db-*.log show no record of the message every arriving and >>>>>>> yet the producer doesn't get an error. >>>>>>> >>>>>>> Alistair >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> mov eax,1 >>>>>>> mov ebx,0 >>>>>>> int 80h >>>>> >>>> >>> >>> >> >> >> >> -- >> http://fusesource.com >> http://blog.garytully.com >