Advertisement

12.19.2005 at 09:46PM PST, ID: 21670211
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

MQ Trigger (IBM Websphere MQ)

Zone: EAI
Tags: mq, trigger, websphere
Hi,

We are planning to use dynamic queues as part of our MQ solution. We are at a road block now because we are not sure if MQ trigger can be triggered for a dynamic queue. I would appreciate it if anyone out there let us know if trigger can be used on dynamic queue. If yes, could you let us know the procedure? Thanks

Sri
Start your free trial to view this solution
Question Stats
Zone: Database
Question Asked By: chillu71
Solution Provided By: dqmq
Participating Experts: 1
Solution Grade: A
Views: 119
Translate:
Loading Advertisement...
12.21.2005 at 12:36AM PST, ID: 15524765

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.21.2005 at 01:31AM PST, ID: 15524902

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.21.2005 at 01:08PM PST, ID: 15529858

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.22.2005 at 10:22PM PST, ID: 15540277

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.23.2005 at 03:26PM PST, ID: 15545178

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
12.23.2005 at 11:35PM PST, ID: 15546151

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
01.02.2006 at 10:49PM PST, ID: 15596772

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
01.03.2006 at 01:28AM PST, ID: 15597321

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
01.04.2006 at 03:28AM PST, ID: 15606729

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
01.04.2006 at 01:57PM PST, ID: 15612170

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
01.05.2006 at 04:09AM PST, ID: 15617095

All comments and solutions are available to Premium Service Members only.

Start your 7 day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
Loading Advertisement...
Microsoft
  • Internet Protocols
  • Applications
  • Development
  • OS
  • Hardware
  • Windows Security
Apple
  • Operating Systems
  • Hardware
  • Programming
  • Networking
  • Software
Internet
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Spy / Ad Blockers
  • Web Browsers
  • New Net Users
  • Web Development
  • Chat / IM
  • Anti Spam
  • Web Servers
  • Anti-Virus
  • Email Clients
Gamers
  • Tips
  • Online / MMORPG
  • Puzzle
  • Emulators
  • Action / Adventure
  • Role Playing
  • Consoles
  • Game Programming
  • Strategy
  • Sports
  • Misc
  • Computer Games
Digital Living
  • Hardware
  • New Net Users
  • New Users
  • Software
  • Digital Music
  • Gaming World
  • Home Security
  • Apple
  • Networking Hardware
Virus & Spyware
  • Vulnerabilities
  • IDS
  • Encryption
  • Anti-Virus
  • Operating Systems Security
  • Software Firewalls
  • WebApplications
  • Cell Phones
  • Operating Systems
  • Internet
  • Hardware Firewalls
Hardware
  • Handhelds / PDAs
  • Displays / Monitors
  • Components
  • Networking Hardware
  • Peripherals
  • Laptops/Notebooks
  • Storage
  • Servers
  • Desktops
  • New Users
  • Misc
  • Apple
Software
  • System Utilities
  • Industry Specific
  • Network Management
  • Photos / Graphics
  • Page Layout
  • VMWare
  • Misc
  • Web Development
  • OS
  • CYGWIN
  • Voice Recognition
  • Message Queue
  • Quality Assurance
  • Security
  • Firewalls
  • MultiMedia Applications
  • Development
  • Database
  • Office / Productivity
  • Business Management
  • OS/2 Apps
  • Server Software
  • Internet / Email
ITPro
  • OS
  • Storage
  • Encryption
  • Operating Systems Security
  • Apple Hardware
  • Laptops & Notebooks
  • Servers
  • Networking Hardware
  • Peripherals
  • Devices
  • Displays / Monitors
  • WebTrends / Stats
  • Search Engines
  • Firewalls
  • WebApplications
  • IDS
  • Vulnerabilities
  • Email Clients
  • File Sharing
  • Spy / Ad Blockers
  • Web Browsers
  • Web Servers
  • Networking
  • Anti-Virus
  • Chat / IM
  • Anti Spam
Developer
  • Web Servers
  • Web Browsers
  • Game Programming
  • Dev Tools
  • Industry Specific
  • Office / Productivity
  • Database
  • CYGWIN
  • Web Development
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Programming
  • Content Management
  • Application Servers
  • Protocols
Storage
  • Removable Backup Media
  • Storage Technology
  • Servers
  • Grid
  • Remote Access
  • Backup / Restore
  • Misc
  • Hard Drives
OS
  • Miscellaneous
  • Security
  • Development
  • Linux
  • VMWare
  • MainFrame OS
  • Unix
  • Apple
  • OS / 2
  • AS / 400
  • BeOS
  • Microsoft
  • VMS / OpenVMS
Database
  • Oracle
  • Miscellaneous
  • MySQL
  • Software
  • Sybase
  • Contact Management
  • PostgreSQL
  • Data Manipulation
  • Clarion
  • InterSystems Cache
  • Siebel
  • MUMPS
  • OLAP
  • SQLBase
  • SAS
  • GIS & GPS
  • 4GL
  • Berkeley DB
  • DB2
  • Informix
  • Interbase / Firebird
  • FoxPro
  • Reporting
  • LDAP
  • Filemaker Pro
  • MS SQL Server
  • dBase
  • MS Access
Security
  • Misc
  • Web Browsers
  • Software Firewalls
  • Operating Systems Security
  • File Sharing
  • Spy / Ad Blockers
  • Vulnerabilities
  • WebApplications
  • IDS
  • Anti-Virus
  • Encryption
  • Anti Spam
  • Email Clients
  • VPN
  • Chat / IM
Programming
  • Editors IDEs
  • Installation
  • Handhelds / PDAs
  • Multimedia Programming
  • System / Kernel
  • Algorithms
  • Game
  • Signal Processing
  • Project Management
  • Open Source
  • Database
  • Misc
  • Languages
  • Processor Platforms
  • Theory
Web Development
  • Scripting
  • Blogs
  • Web Servers
  • Software
  • Search Engines
  • Web Graphics
  • Images
  • Internet Marketing
  • Images and Photos
  • Components
  • Document Imaging
  • Web Languages/Standards
  • Illustration
  • WebApplications
  • Fonts
  • WebTrends / Stats
  • Authoring
  • Digital Camera Software
  • Miscellaneous
Networking
  • Protocols
  • Apple Networking
  • Network Management
  • Message Queue
  • Application Servers
  • Content Management
  • File Servers
  • Email Servers
  • Misc
  • Java Editors & IDEs
  • Wireless
  • Networking Hardware
  • Backup / Restore
  • System Utilities
  • ISPs & Hosting
  • Web Servers
  • Storage Technology
  • Removable Backup Media
  • Servers
  • Broadband
  • Grid
  • OS / 2
  • Novell Netware
  • Unix Networking
  • Windows Networking
  • Security
  • Telecommunications
  • Operating Systems
  • Linux Networking
Other
  • Community Advisor
  • Lounge
  • Community Support
  • New Net Users
  • Philosophy / Religion
  • Math / Science
  • Miscellaneous
  • URLs
  • Expert Lounge
  • Politics
  • Puzzles / Riddles
Community Support
  • Suggestions
  • New to EE
  • New Topics
  • Community Advisor
  • CleanUp
  • Announcements
  • General
  • Feedback
  • Input
  • EE Bugs
 
12.21.2005 at 12:36AM PST, ID: 15524765
It's a little bit of an odd request, but I don't see why it wouldn't work.  Setup the triggering-related parameters on the model queue (that you will open to instantiate the dynamic queue).  I doubt I can remember all of them off the top of my head, but you would certainly need to specify TRIGTYPE, an INITQ, and set TRIGGER ON.  You also need to define an INITQ and start a trigger monitor that listens for messages on the INITQ.

 
12.21.2005 at 01:31AM PST, ID: 15524902
hi dqmq,

Will this work if I am creating say 10 dynamic queues using the model queue. How does the trigger know when to fire and for which queue? I appriciate your help.
 
12.21.2005 at 01:08PM PST, ID: 15529858
First, I have my docs now, so here's a little more specific:

Define QModel with:
TRIGGER
PROCESS=name of process  
USAGE=NORMAL
TRIGTYPE=FIRST  (99% of applications)
INITQ=name of initq

Define INITQ like any other QLocal
Define PROCESS to describe how to start  triggered application
Start trigger monitor against INITQ

Now, to followup questions:
>Will this work if I am creating say 10 dynamic queues using the model queue.
Yes, there is no limit.

>How does the trigger know when to fire and for which queue?
To get this working you need to COMPLETELY understand the list of trigger conditions that is described in the programmers guide.

When trigger conditions are satisified on a QUEUE, MQ's triggering mechanism places a trigger message in the INITQ that was inherited from the QMODEL definition.  The trigger message contains the name of the triggered QUEUE plus the APPLICID and other information from the PROCESS definition.

The trigger monitor which has a "hot-read" on the INITQ, then wakes up immediately and reads the trigger message.  It uses the information in the trigger message to start the triggered application, passing it the trigger message.

The triggered application can then extract the name of the QUEUE from the trigger message.

A couple words of caution:
A trigger message is associated with a queue, NOT a specific application message.  It means one thing, and one thing only: that trigger conditions for that queue were momentarily satisfied.  That implies: 1) the triggered application must be able to tolerate not finding any messages on the queue 2) the triggered application must process the queue until empty (casually referred to as "draining the queue").

Triggering works great and is pretty much maintenance free if it is used as intended and set up properly.  But trying to contort it into something it was not designed for, while sometimes appealing, is a common pitfall and usually leads to much agony and hatred for triggering itself.  Triggering is not the problem; misuse is.

Eventually, it's more than likely that you will want the trigger monitor and the triggered application to run in background. In other words, without a console or other status display. Therefore, it must have robust error handling and ways to communicate errors when they occur.  Plan for that.

Get triggering working on a permanent queue first, then switch over to dynamic queue.

Get the process working with the trigger monitor and the triggered application running in foreground so you can "see" what is happening.  Switch them into background only after you are comfortable with how everything works.

Apply the KISS prinicple religiously. Increase complexity and sophistication gradually as you are more comfortable with the mechanics of triggering.

Avoid TRIGTYPE=EVERY. Anything that can be done with EVERY can be done better and easier another way.  Remember what a trigger message means:  that trigger conditions for that queue were momentarily satisfied. Why would you care to know that more than once at the same time?

Finally, triggering implementations vary slightly for each platform/environment.  If you have a followup question, please imention the environment you are using.




 


 
12.22.2005 at 10:22PM PST, ID: 15540277
Thanks for such an elaborate answer. I thought if I could give you the exact scenario then it might set things straight and you could let me know if the approach we are taking is or is not a right one.

Before I go any further, we are working in windows environment (windows server 2003)

Incoming message scenario:
At any given time MQ could receive close to tens of thousands of messages. Each message is from a unique customer (each customer is identified by unique id). We are planning have multiple local queues to handle the incoming messages. These messages are pushed to the business tier for further processing. This operation is pretty straight forward.

Outgoing message scenario: (This is where we need an answer)
In our solution we automatically connect to our customer to process his request. As I said each customer is identified by their unique id. What we intend to do is to create a dynamic queue for each customer. Part of dynamic queue name will have the customer id. (note; outgoing messages will not be as many as incoming). So as an example, we might create a thousand dynamic queues. Once a message arrives in this dynamic queue we need a trigger that will start a process. This process will get the customer id from the dynamic queue name and connect with the customer to complete the process. Is this an healthy approach? Do you have any suggestion? Let me know if you didn't follow any of this info.

Thanks!
 
12.23.2005 at 03:26PM PST, ID: 15545178
My first reaction is that the dynamic queues and the triggers are additional overhead and unnecessary complexity. I will elaborate further when I have a little more time.  But in the meantime, a couple of questions for you:

1. Do you intend to use permanent dynamic queues or temporary dynamic queues?
2. At what point in the process do you create the dynamic queue?
3. Describe briefly what you mean by "automatically connect"?  Is that a scheduled event or is it driven by something else?
4. How much time between automatically connecting to pickup messages and connecting to send back the replies?
5. Are the tens of thousands of messages related to one another (other than they came from the same customer) or does each one represent a "standalone" request.  I mean do you need to collect multiple messages to process one request or does each message represent a request by itself?






 
12.23.2005 at 11:35PM PST, ID: 15546151
To get messages back you will ordinarily need an XMITQ for each customer.  So, you tell me, what is the point of writing responses to a dynamic queue, then triggering an application to immediately move them to the XMITQ?

The usual method is simply to send the responses back to REPLYTOQUEUE and REPLYTOQMGR which are provided by the originator of the request.  Administratively, either by XMITQ naming convention or by use of qmgr alias, those messages end up in the XMITQ destined for the right customer.  The XMITQ can be triggered so it will automatically startup the channel and begin shipping responses as soon as they appear. NO need for a dynamic queue and no need for a triggered application to process it.




 



 
01.02.2006 at 10:49PM PST, ID: 15596772
Answers to your questions are as follows:

1. Do you intend to use permanent dynamic queues or temporary dynamic queues?
A. Yes we intend to use permanent dynamic queue. We thought of using temporary dynamic queue but messages might come into the queue at different intervals. So this makes us to think about your suggestion of using XMITQ.

2. At what point in the process do you create the dynamic queue?
A. They are created when we want to send out a response to the customer's request. The actual process is asynchronous. First, customer would send a request. This request would have the name of the dynamic queue to be created. Once the request is received the customer is no longer in the picture. The mid-tier process the request (using DB and other services). Once the response is generated, one mid-tier process calls the customer to come and get the response and the other process creates the dynamic queue and posts the response. Customer would come and read the response in the corresponding dynamic queue. (This is the intended solution)

3. Describe briefly what you mean by "automatically connect"?  Is that a scheduled event or is it driven by something else?
A It is driven by a mid-tier component.

4. How much time between automatically connecting to pickup messages and connecting to send back the replies?

A. This depends on the customer. If the customer is busy then the process would wait and retry until the customer is free.

5. Are the tens of thousands of messages related to one another (other than they came from the same customer) or does each one represent a "standalone" request.  I mean do you need to collect multiple messages to process one request or does each message represent a request by itself?

A. There could be multiple requests from a single customer at the same time. But the requests are different between customers.

Hope this gives you a good understanding of the process. We need to do more research on XMITQ. Sounds like a good suggestion. I would appreciate if you could explain XMITQ process in more detail. How different is this than the standard local queue? Will there be 'n' number of XMITQ's each representing a customer?
 
01.03.2006 at 01:28AM PST, ID: 15597321
Whenever I hear someone planning to use permanent dynamic queues, I get suspicious. Legitimate uses for them are rare.  I also do not like the idea, nor see any good reason for the customer to send the name of the dynamic queue for you to create.   If anything, the customer creates the dynamic queue then sends you the name so you know where to send the reply. It does no good for you to create the dynamic queue on your end because the customer cannot retrieve messages from there.

By "customer", I'm referring to a distributed queing partner.  It occurs to me that before I go off on too much of a rant, that you should clarify what you mean by a "customer".   Do your customers connect locally to your qmgr,  do they have channel connections, or are your customers connecting as MQ Clients?  Does each customer have a unique qmgr or is each customer a different user on the same qmgr?

Any two qmgrs exchange messages over channel pairs.   An XMITQ is the local queue that feeds an outbound channel.  Whenever you put a message to a remote destination, it gets queued locally first in an XMITQ.  Your qmgr MUST have an XMITQ for every adjacent qmgr it connects with.
 
01.04.2006 at 03:28AM PST, ID: 15606729
Customers/Clients use our webservices to send updates and requests. Webservices inturn connect to our local Q Mgr and PUTs message. Updates/requests come in at regular intervals. These requests are then pushed to the middle tier. Here we identify the customer and we intend to create a dynamic queue for that customer and PUT our response on the queue (after the response is generated, this is were the process I mentioned in my previous comment would send a request to the customer (with queue name) to collect the response and also PUTs the response in the dynamic queue created). Once the customer is ready to accept the response for the request, customer connects to the webservice and passes the queue name. Webservice knows which queue to find and gets the response back to the customer. Communication is always going to be through our local Q Mgr.
 
01.04.2006 at 01:57PM PST, ID: 15612170
OK, the fog is beginning to lift. I misunderstood your sense of "connecting" with the customer.  As I understand it now, the customer connections are done by WebServices, not MQ. But I'm still a little fuzzy about what kind of notification you intend to send to the customer that the response is ready.  Please clarify.  

I'm also interested if multiple responses might appear in the same dynamic queue at one time. When the WebService connects to pick up a response, does it need to distinguish responses for one request from responses for another? Is a typical "response" a single message, a few messages, or a whole bunch of them?

My discussion about XMITQ's does not apply to you since you don't have channel connections with your customers.

Your original question was about triggering: can you trigger a dynamic queue. Yes. Lot's of them, if you want. Each triggered process is passed the trigger message so it can know what queue to go after.

Does it make sense to trigger a process that notifies the customer that a response is waiting?  I'm afraid you will have lots of struggles with that paradigm. There is no relationship between a trigger and a message. A trigger is related to a queue.  Unless the queue can only contain a single response, then there is no relationship between a trigger and a response, either. The triggered program needs to open the dynamic queue and keep it open until it is empty. Now, that's not necessarily a show stopper, but it does imply dozens or hundreds or more triggered processes hanging around while customers are busy.

If you're going to use triggering, adopt this mindset: the triggered program reads the triggered queue, determines what constitutes a response, to which customer, and then notifies the customer. That process continues in a loop until the queue is empty. Also, I'd prefer to get the customer identity from the reply message rather than the queue name, as that gives you more flexibility by not locking you down to one queue per customer.

BTW, this thread is getting old and it's beginning to drop off my radar scope. I'm glad to advise further, but suggest we email direct since no-one else is participating, anyway.

millerdq@verizon.net

regards,
Dennis
Accepted Solution
 
01.05.2006 at 04:09AM PST, ID: 15617095
I have sent an email to millerdq@verizon.net

Thanks
 
 
20080236-EE-VQP-29