activemq-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Petter Nordlander (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ARTEMIS-283) Protocol independent JMSMessageID from management interface
Date Wed, 28 Oct 2015 07:10:28 GMT

    [ https://issues.apache.org/jira/browse/ARTEMIS-283?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14977881#comment-14977881
] 

Petter Nordlander commented on ARTEMIS-283:
-------------------------------------------

1. The primary use case I thought of is to create management scripts etc to deal with JMS
messages regardless of which producer. Could also be GUI listings/dashboards etc. The JMSMessageID
is set specifically in listings for messages produced with HornetQ/Core JMS provider.

Without a clear ID to correlate with a message, from a JMS standpoint, you have no clue which
messages you have listed, only that there are messages some properties and a timestamp.

2. Sure - but I'm not talking about messages produced with non-jms apis. But with OpenWire
JMS Client (ActiveMQ 5.12.1 in this case) and Proton JMS AMQP1.0 v 0.32 client.  I agree that
it won't make sense for messages produced with MQTT or Stomp or.. other non JMS producers.


As you can see in the listings above, a lot of JMS headers (JMSDeliveryMode among others)
are actually set for all producers. Only JMSMessageID is missing. 

> Protocol independent JMSMessageID from management interface
> -----------------------------------------------------------
>
>                 Key: ARTEMIS-283
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-283
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 1.1.0
>            Reporter: Petter Nordlander
>            Priority: Minor
>
> The Management interface (JMX) has a listMessagesAsJSON operation on JMS queues.
> Listing JMS messages would not make sense if there is not a JMSMessageID to correlate
with. This works only for messages produced with Artemis "Core JMS" protocol (i.e. HornetQ
wire protocol). Messages produced with AMQP (proton) and OpenWire JMS clients does not contain
the JMSMessageID property. 
> This property is vital to make GUIs, management scripts and whatnot.
> Example:
> Three messages in the following order: Artemis JMS, OpenWire, AMQP
> {code:javascript}
> [
> 	{
> 		"JMSPriority":4,
> 		"JMSMessageID":"ID:11d61bfc-7c8f-11e5-b67d-fbf95a4499b8",
> 		"address":"jms.queue.a1",
> 		"JMSExpiration":0,
> 		"__AMQ_CID":"11d1d638-7c8f-11e5-b67d-fbf95a4499b8",
> 		"JMSTimestamp":1445938962608,
> 		"messageID":134336,
> 		"JMSDeliveryMode":"PERSISTENT"
> 	},
> 	{
> 		"address":"jms.queue.a1",
> 		"JMSExpiration":0,
> 		"JMSTimestamp":1445938969309,
> 		"__HDR_MARSHALL_PROP":[0,0,0,1,0,6,118,101,110,100,111,114,9,0,3,97,109,113],
> 		"messageID":134354,
> 		"__HDR_GROUP_SEQUENCE":0,
> 		"__HDR_PRODUCER_ID":[0,0,0,61,123,1,43,0,52,73,68,58,80,101,116,116,101,114,115,45,77,97,99,66,111,111,107,45,80,114,111,46,108,111,99,97,108,45,54,52,53,55,52,45,49,52,52,53,57,51,56,57,54,57,49,53,54,45,49,58,49,0,1,0,1],
> 		"JMSDeliveryMode":"PERSISTENT",
> 		"JMSPriority":4,
> 		"__HDR_COMMAND_ID":6,
> 		"__HDR_ARRIVAL":0,
> 		"__HDR_REDELIVER_COUNTER":0,
> 		"__HDR_MESSAGE_ID":[0,0,0,65,110,2,-82,2,123,0,52,73,68,58,80,101,116,116,101,114,115,45,77,97,99,66,111,111,107,45,80,114,111,46,108,111,99,97,108,45,54,52,53,55,52,45,49,52,52,53,57,51,56,57,54,57,49,53,54,45,49,58,49,0,1,0,1,0,1],
> 		"__HDR_DROPPABLE":false,
> 		"__HDR_BROKER_IN_TIME":1445938969310
> 	},
> 	{
> 		"JMS_AMQP_NATIVE":false,
> 		"JMSPriority":4,
> 		"address":"jms.queue.a1",
> 		"JMSExpiration":0,
> 		"JMS_AMQP_MESSAGE_FORMAT":0,
> 		"JMSTimestamp":1445939704838,
> 		"messageID":134376,
> 		"JMSDeliveryMode":"PERSISTENT"
> 	}
> ]
> {code}
> Corresponding Message Ids would be (read from JMS interface).
> Core: JMSMessageID: 783cf118-7c91-11e5-9a09-b3c5f39ba469:0:0:-1
> OpenWire: JMSMessageID: ID:Petters-MacBook-Pro.local-64574-1445938969156-1:1:1:1:1
> AMQP: JMSMessageID: 783d1829-7c91-11e5-9a09-b3c5f39ba469:0:0:-1
> Problem is in QueueCtrlImpl which uses core-jms-client to convert messages from core
to Jms Map. It consider all messages as core messages. Logic from each protocol/client should
be used on respective message.
>     Map<String, Object> jmsMessage = ActiveMQMessage.coreMaptoJMSMap(coreMessage);



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message