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

Sanjay M Pujare commented on APEXMALHAR-2434:
---------------------------------------------

Going with the last option ie. using deterministic naming for the metadata 
queue, this is what we should do:

- for the actual application queue named "FOOBAR", the store should use the 
metadata queue "FOOBAR.metadata".
- all operators (partitions) writing to "FOOBAR" use message properties 
(javax.jms.Message.setIntProperty(String, int)) to set the operatorId with name 
"operatorId" on the message to be written.
- these operators use message selectors in createBrowser(queue) and 
createConsumers(queue) to only get messages with those respective message 
properties e.g. operator 2 only gets messages with message property 
operatorId==2.

This solution seems to be simple and elegant.

> JMSTransactionableStore uses Session.createQueue() which fails
> --------------------------------------------------------------
>
>                 Key: APEXMALHAR-2434
>                 URL: https://issues.apache.org/jira/browse/APEXMALHAR-2434
>             Project: Apache Apex Malhar
>          Issue Type: Bug
>            Reporter: Sanjay M Pujare
>
> JMSTransactionableStore needs to create a queue for storing metadata 
> (lastWindowId etc) that will work across invocations to support fault 
> tolerance and idempotency. 
> However as the createQueue Javadocs says: "Note that this method is not for 
> creating the physical queue. The physical creation of queues is an 
> administrative task and is not to be initiated by the JMS API." This causes a 
> failure in actual tests with a production JMS based broker (such as IBM 
> MQSeries). We will need to fix this in one of the following ways:
> - using an alternative store (HDFS or JDBC)
> - allow the user to specify a name for this metadata queue via a property
> - generate the name in a deterministic fashion from the subject of the queue
> The last 2 alternatives assume that the application user has created this 
> metadata queue ahead of time from the admin console. We will need to document 
> this in the malhar docs. The last alternative looks most attractive except if 
> there are multiple JMS output operators (say partitions of an operator) 
> writing to the same queue (subject) we will have to use some additional logic 
> for them to share this single metadata queue.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to