Solved

What is the best way to pull the messages from MQ queue.

Posted on 2014-04-03
7
387 Views
Last Modified: 2014-04-07
I have written a C# Win service to pull the messages from Websphere MQ queue. I have a question here on the approach to be followed.

1. Open the connection only once to the queue and pull all the messages and keep checking for the messages forever and never close the connection.

2. Establish the connection to queue and then pull the message and then close it immediately. And do the same for every message.

What is the best way? And why?

I have opeted the 2nd one, but one of my friend suggest the 1st one. Please suggest me which is the best way.
0
Comment
Question by:GouthamAnand
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 52

Assisted Solution

by:Carl Tawn
Carl Tawn earned 125 total points
ID: 39975671
I would go with the first option as there is no need to keep connecting and disconnecting, plus the is a lot of additional overhead with doing so. I'd only consider closing the connection each time if there is any chance of hitting the concurrent connection limit.
0
 
LVL 16

Assisted Solution

by:Easwaran Paramasivam
Easwaran Paramasivam earned 125 total points
ID: 39975849
It depends. If your frequency to hit MSMQ is less then go for second option. Otherwise choose first option.

One more point is that if your MSMQ is being modified rarely then better save the result of first hit in a Cache object. So that you no need to read each time the MSMQ.

Analyze based on your requirement and go for it. There is no hard rule to say which one is correct approach.
0
 
LVL 35

Accepted Solution

by:
Gary Patterson earned 200 total points
ID: 39977566
In a high-volume application, option 1 is probably "more right".

Repeatedly opening and closing a connection creates overhead on both the client and the server.

When using this model, you'd MQGET with a relatively long or unlimited timeout interval (read the docs if you use MQ from IMS apps).  MQGET blocks on an empty queue, so you don't burn a lot of CPU while waiting for the next entry.  If you MQGET with a short timeout, you burn a lot of cycles dealing with NO_MSG_AVAILABLE.

Only close if you are shutting the application down or need to disconnect for some reason.

In a low volume application, it doesn't make that much difference, but remember that low-volume applications have a tendency to occasionally and suddenly become high volume applications.
0
Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

 
LVL 5

Assisted Solution

by:lgacs
lgacs earned 50 total points
ID: 39980499
Previous comments are correct, but ...

If the queue manager is remote, you must manage connection failures in case 1 or choose case 2 if performance is not a key issue.
0
 
LVL 35

Expert Comment

by:Gary Patterson
ID: 39980645
Why would you design-in poor performance to an application?
0
 
LVL 5

Expert Comment

by:lgacs
ID: 39983418
Reliability first !
0
 

Author Closing Comment

by:GouthamAnand
ID: 39983648
Thanks a lot to every one for replying to my question.
0

Featured Post

MIM Survival Guide for Service Desk Managers

Major incidents can send mastered service desk processes into disorder. Systems and tools produce the data needed to resolve these incidents, but your challenge is getting that information to the right people fast. Check out the Survival Guide and begin bringing order to chaos.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
The Email Laundry PDF encryption service allows companies to send confidential encrypted  emails to anybody. The PDF document can also contain attachments that are embedded in the encrypted PDF. The password is randomly generated by The Email Laundr…
Exchange organizations may use the Journaling Agent of the Transport Service to archive messages going through Exchange. However, if the Transport Service is integrated with some email content management application (such as an antispam), the admini…

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question