Hi List,
I have a fairly simple set-up with a single Activemq (currently 5.3.2,
but the behavior existed with previous versions).
On that AMQ we have a few queue's and topics, where the topics are
filled using PHP producers with Stomp and four Java subscribers with the
normal openwire protocol (via a Spring jms listener container). The PHP
producers are created on demand and send a single, tiny text message
when some data needs to be adjusted in the Java subscribers.
The problem is that all four consumers sometimes receive a message
without such a text body, where it should have contained one.
For instance, we have a hourly cronjob that sends an update after its
done ('views 0'). This cronjob is executed on the same machine, with the
same php-scripts etc. Today, the message was empty at 7u, 10u, 11u, 15u,
17u and 19u, although yesterday only at 6u, 10u and 20u.
So for now my question would be: how to debug this? I can trivially
reproduce the situation by just sending a few bogus-messages some of
those will fail. I can't see any difference in the php-side between
failed and successful messages. But the server is used quite heavily
with messages over the queues, so just changing the log level to debug
won't be a good start (unless only a specific topic could be in
debugmode?). I could separate the queues from the topics for now, but
than I have no guarantee the same situation occurs.
I've no idea where to look, but I'm actually suspecting ActiveMQ for now
as I can't really believe my php-scripts would fail only some of the
time (normally it fails or it works).
Any idea where I should look?
Best regards,
Arjen
My configuration is rather trivial, its the default config without
systemusage and destinationpolicy. With the stomp and openwire
transporters like so:
<transportConnector name="stomp"
uri="stomp://0.0.0.0:61613?transport.closeAsync=false"/>
When logging the messages in the subscribers, it looks like this for a
correct one:
ActiveMQTextMessage {commandId = 3, responseRequired = false, messageId
= ID:argus-38958-1279890714168-2:66257231:-1:1:1, originalDestination =
null, originalTransactionId = null, producerId =
ID:argus-38958-1279890714168-2:66257231:-1:1, destination =
topic://pw_cache_products, transactionId = null, expiration = 0,
timestamp = 1281801902987, arrival = 0, brokerInTime = 1281801902987,
brokerOutTime = 1281801902988, correlationId = null, replyTo = null,
persistent = false, type = null, priority = 0, groupID = null,
groupSequence = 0, targetConsumerId = null, compressed = false, userID =
null, content = null, marshalledProperties = null, dataStructure = null,
redeliveryCounter = 0, size = 0, properties = null, readOnlyProperties =
true, readOnlyBody = true, droppable = false, text = views 0}
And like this for an incorrect one:
ActiveMQTextMessage {commandId = 3, responseRequired = false, messageId
= ID:argus-38958-1279890714168-2:66384399:-1:1:1, originalDestination =
null, originalTransactionId = null, producerId =
ID:argus-38958-1279890714168-2:66384399:-1:1, destination =
topic://pw_cache_products, transactionId = null, expiration = 0,
timestamp = 1281805503252, arrival = 0, brokerInTime = 1281805503252,
brokerOutTime = 1281805503252, correlationId = null, replyTo = null,
persistent = false, type = null, priority = 0, groupID = null,
groupSequence = 0, targetConsumerId = null, compressed = false, userID =
null, content = null, marshalledProperties = null, dataStructure = null,
redeliveryCounter = 0, size = 0, properties = null, readOnlyProperties =
true, readOnlyBody = true, droppable = false, text = null}
I.e. text = null vs text = views 0