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

Reply via email to