insightful as always
"Miller, Dennis" <[EMAIL PROTECTED] To: [EMAIL PROTECTED] OM> cc: Sent by: MQSeries Subject: Re: Transaction Names List <[EMAIL PROTECTED] N.AC.AT> 06/23/2004 02:10 PM Please respond to MQSeries List Hmmm...I do believe in the notion that a queue is a (very) special case of a database. However, in this respect I think they are (very) different. Relational tables typically have a formal structure that constrains their content to the purposes for which they were designed. MQ queues (setting aside the MD), have are unstructured, which means their content is comparatively freeform and unrestricted. Theoretically, any queue can contain anything, which begs a tough question about naming queues after what they contain. Take an XMITQ, for example. No one names an XMITQ after what it contains. The closest I can come would be something like: "xxxxx.MESSAGES.BOUND.FOR.QMGRx". Or a bridge queue: "xxxxx.TRANSACTION.REQUESTS". Or the DLQ: "xxxxx.MESSAGES.WITH.NO.PLACE.TO.GO". Or an INITQ: "xxxxx.TRIGGER.MESSAGES". Certainly we can (and usually do) assert some discipline over what kind of messages go to which queues. But the urge to name them accordingly is a mindset that can paint you into a corner. Suppose we have yourapp.ORDER.AMENDMENTS and then we want to serve functionality for order creation from the same queue? In your case (RE: YOURAPP.TRANSACTION_NAME) is it not possible for more than one transaction to be served from the same queue? Or what if we need to scale-up and have multiple queues for order amendments? (The subtle point is that, strictly speaking, "yourapp.ORDER.AMENDMENTS.2" is a deviation from the what-it-contains standard, as there is no such thing as an "order.amendments.2"). I offer a third alterntive. Rather than naming queues after what they DO or what they CONTAIN, how about mimicing the style used by MQ developers and naming queues after what they ARE? For example: QMGRx.HISPEED.XMITQ CICSx.BRIDGEQ QMGRx.DEAD.LETTERQ QMGRx.BATCH.INITQ myapp.ERROR.COLLECTIONQ myapp.INBOUND.TRANSFERQ myapp.COMMON.SUBSCRIPTIONQ myapp.SILname.REQUESTQ myapp.username.DYNAM.REPLYQ Instead of: myapp.ORDER.AMENDMENTS use: myapp.programname.REQUESTQ Now, before getting too excited, it's important to understand one more thing. You gave us the paradigm MYAPP.TRANSACTION_NAME -> YOURAPP.TRANSACTION_NAME which is mapped by qremotes/qaliases. The above suggestion pertains only to the QLOCAL definition which is exclusive to the "->YOURAPP" side. I absolutely do not suggest the same convention for the "->MYAPP" side which corresponds to the QREMOTE/QALIASes. Over there, we need a different kind of queue identity convention that is independent of the physical implementation. There, it makes perfect sense to name queues according to content, or more correctly, message structure. I like to think of message structures as defined by "contract". For example, there would be a contract for order amendments (that may involve one or more message formats) and another for order creation. I would go so far as to suggest that each contract be assigned a different QALIAS/QREMOTE name even if they are originally intended for the same queue. Regards, Dennis -----Original Message----- From: John Scott [mailto:[EMAIL PROTECTED] Sent: Wednesday, June 23, 2004 9:55 AM To: [EMAIL PROTECTED] Subject: Re: Transaction Names Thanks for that little "sound byte" - I like "queues do not do anything". I agree with you. My reasoning is that, like database tables and class names, they're typically named after what they contain, not what they do. You would have an "ORDER_AMENDMENT" table which is used by the "update_order" program to update orders in the database. Likewise, the update_order program would have an instance of the "OrderAmendment" class passed to the "updateOrder" method of an instance of the "Order" class to update the order. Regards John Scott IBM Certified Specialist - MQSeries Argos Ltd -----Original Message----- From: Randy J Clark [mailto:[EMAIL PROTECTED] Sent: 22 June 2004 18:10 To: [EMAIL PROTECTED] Subject: Re: Transaction Names Our queues are named after what it is - we describe the contents of the queue... because a queue does not "do" anything. John Scott <[EMAIL PROTECTED] To: [EMAIL PROTECTED] .CO.UK> cc: Sent by: MQSeries Subject: Transaction Names List <[EMAIL PROTECTED] N.AC.AT> 06/22/2004 01:29 AM Please respond to MQSeries List I have already posted this question on mqseries.net, but I wondered if I would get some more responses on the list server... I am not looking for ideas on general MQSeries naming standards, I already have those and there are enough examples in the archives to keep anybody happy. Our queue naming standard is basically APP_NAME.TRANSACTION_NAME. Where APP_NAME is the name of the application that is allowed access to the queue. We use alias/remote queue definitions to wire up MYAPP.TRANSACTION_NAME -> YOURAPP.TRANSACTION_NAME I am now looking in detail at the TRANSACTION_NAME. When I look at the queues we have I see a mixture of TRANSACTION_NAME styles - some of them are named after what the message content is (i.e. ORDER_AMENDMENT) and others are named after what the applications (typically the receiving application) does with the data (i.e. UPDATE_ORDER). Thus we would have a queue called: MYAPP.ORDER_AMENDMENT or MYAPP.UPDATE_ORDER I wanted to canvas whether people preferred the "what it is" over "what it does" or vica-versa. Which style do you use and why? Regards John Scott IBM Certified Specialist - MQSeries Argos Ltd. ************************************************************** Click here to visit the Argos home page http://www.argos.co.uk The information contained in this message or any of its attachments may be privileged and/or confidential, and is intended exclusively for the addressee. Unauthorised disclosure, copying or distribution of the contents is strictly prohibited. The views expressed may not be official policy, but the personal views of the originator. If you have received this message in error, please advise the sender by using the reply facility in your e-mail software. All messages sent and received by Argos Ltd are monitored for viruses, high-risk file extensions, and inappropriate content. Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com Archive: http://vm.akh-wien.ac.at/MQSeries.archive Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com Archive: http://vm.akh-wien.ac.at/MQSeries.archive ************************************************************** Click here to visit the Argos home page http://www.argos.co.uk The information contained in this message or any of its attachments may be privileged and/or confidential, and is intended exclusively for the addressee. Unauthorised disclosure, copying or distribution of the contents is strictly prohibited. The views expressed may not be official policy, but the personal views of the originator. If you have received this message in error, please advise the sender by using the reply facility in your e-mail software. All messages sent and received by Argos Ltd are monitored for viruses, high-risk file extensions, and inappropriate content. Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com Archive: http://vm.akh-wien.ac.at/MQSeries.archive Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com Archive: http://vm.akh-wien.ac.at/MQSeries.archive Instructions for managing your mailing list subscription are provided in the Listserv General Users Guide available at http://www.lsoft.com Archive: http://vm.akh-wien.ac.at/MQSeries.archive